Pytorch的net.train 和 net.eval的使用
在訓練模型時會在前面加上:
model.train()
在測試模型時在前面使用:
model.eval()
同時發現,如果不寫這兩個程序也可以運行,這是因為這兩個方法是針對在網絡訓練和測試時采用不同方式的情況,比如Batch Normalization 和 Dropout。
訓練時是正對每個min-batch的,但是在測試中往往是針對單張圖片,即不存在min-batch的概念。由於網絡訓練完畢后參數都是固定的,因此每個批次的均值和方差都是不變的,因此直接結算所有batch的均值和方差。所有Batch Normalization的訓練和測試時的操作不同
在訓練中,每個隱層的神經元先乘概率P,然后在進行激活,在測試中,所有的神經元先進行激活,然后每個隱層神經元的輸出乘P。
參考
https://blog.csdn.net/u011276025/article/details/78507950
https://blog.csdn.net/u012436149/article/details/78623576
---------------------
作者:Never-Giveup
來源:CSDN
原文:https://blog.csdn.net/qq_36653505/article/details/84728489
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!