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