【pytorch】model.train和model.eval用法及区别详解
生活随笔
收集整理的這篇文章主要介紹了
【pytorch】model.train和model.eval用法及区别详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用PyTorch進行訓練和測試時一定注意要把實例化的model指定train/eval,eval()時,框架會自動把BN和DropOut固定住,不會取平均,而是用訓練好的值,不然的話,一旦test的batch_size過小,很容易就會被BN層導致生成圖片顏色失真極大!
Class Inpaint_Network()...... Model = Inpaint_Nerwoek()#train: Model.train(mode=True) ..... #test: Model.eval()1.model.train()
啟用 BatchNormalization 和 Dropout。
2.model.eval()
不啟用 BatchNormalization 和 Dropout。
訓練完train樣本后,生成的模型model要用來測試樣本。在model(test)之前,需要加上model.eval(),否則的話,有輸入數據,即使不訓練,它也會改變權值。這是model中含有batch normalization層所帶來的的性質。
在做one classification的時候,訓練集和測試集的樣本分布是不一樣的,尤其需要注意這一點。
總結
以上是生活随笔為你收集整理的【pytorch】model.train和model.eval用法及区别详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么除掉u盘病毒 如何清除U盘病毒
- 下一篇: 重磅资源|Pytorch1.0版本的Ma