model.train()與model.eval()的用法
在深度學習的訓練和測試代碼中,總會有model.train()和model.eval()這兩句,那么這兩條語句的作用是什么?
通過查閱發現:
如果模型中有BN層(Batch Normalization)和Dropout,需要在訓練時添加model.train(),在測試時添加model.eval()。
其中model.train()是保證BN層每一層批數據的均值和方差,而model.eval()是保證BN用全部數據的均值和方差;
而對於Dropout,model.train是隨機取一部分網絡連接來訓練更新參數,而model.eval()是利用所有網絡連接。
聯系Batch Normalization和Dropout的原理之后就不難理解為何要這么做了。
原文連接:https://www.cnblogs.com/luckyplj/p/13424561.html