モデルのトレーニングとテスト--速度を速める方法


1.最初はkeras側にないと疑ってGPUを呼び出してテストする


しかし、コードや入力された文がCUDAに役立つ限りVISIBLE_DEVICES=xxxネットワーク自体がGPUを呼び出す.

2.model.train()とmodel.eval()


https://blog.csdn.net/Z_lbj/article/details/79672888
主にmodelの訓練時と評価時の異なるBatch NormalizationとDropoutメソッドパターンについてである.
https://blog.csdn.net/jinxin521125/article/details/78435899
eval()の場合、pytorchはBNとDropOutを自動的に固定し、平均ではなく訓練した値を使います.
そうでなければtestのbatch_sizeが小さすぎると、BN層によって画像の色歪みが大きくなりやすい.
https://zhuanlan.zhihu.com/p/26893755
model.eval()は、modelをテストモードにし、dropoutとbatch normalizationの操作は訓練とテストで異なる
テストの結果、eval()を持たない効果は非常に悪く、最初のmAPは41%だったが、持っていくとテストのmAPは56%だった.

3.maxpoolingとボリューム層の式

# nn.MaxPool2d()
m = nn.MaxPool2d(kernel_size=3, stride=2)
input = torch.randn(20, 16, 50, 32)
output = m(input)
print(output.size())    # (20,16, 24, 15)

m = nn.MaxPool2d(kernel_size=(3, 2), stride=(2, 1))
output = m(input)
print(output.size())    # (10,16,24,31)

入力データ次元をW*W FilterサイズFとする×FステップS paddingの画素数Pから
N = (W − F + 2P )/S+1
出力サイズN×N