【Pytorch】Pytorch的net.train 和 net.eval的使用區別
阿新 • • 發佈:2020-12-21
技術標籤:Pytorch
在訓練Pytorch的時候,我們會
在訓練模型時會在前面加上:
model.train()
在測試模型時在前面使用:
model.eval()
同時發現,如果不寫這兩個程式也可以執行,這是因為這兩個方法是針對在網路訓練和測試時採用不同方式的情況,比如Batch Normalization
和 Dropout
。
- 訓練時是正對每個min-batch的,但是在測試中往往是針對單張圖片,即不存在min-batch的概念。由於網路訓練完畢後引數都是固定的,因此每個批次的均值和方差都是不變的,因此直接結算所有
batch
的均值和方差。所有Batch Normalization
- 在訓練中,每個隱層的神經元先乘概率P,然後在進行啟用,在測試中,所有的神經元先進行啟用,然後每個隱層神經元的輸出乘P。