1.介紹
一般情況,model.train()是在訓練的時候用到,model.eval()是在測試的時候用到
2.用法
- 如果模型中沒有類似於BN這樣的歸一化或者Dropout,model.train()和model.eval()可以不要(建議寫一下,比較安全),並且model.train()和model.eval()得到的效果是一樣
- 如果模型中有類似於BN這樣的歸一化或者Dropout,並且程序需要邊訓練和邊測試,最好就是用model.eval()測試完之後,後面補一個model.train()。其中model.train()是保證BN用每一批數據的均值和方差,而model.eval()是保證BN用全部訓練數據的均值和方差;而對於Dropout,model.train()是隨機取一部分網絡連接來訓練更新參數,而model.eval()是利用到了所有網絡連接(結果是取了平均)