model.train()與model.eval()的用法


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM