pytorch:model.train和model.eval用法及區別詳解
阿新 • • 發佈:2020-02-21
使用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()
model.train()
啟用 BatchNormalization 和 Dropout
model.eval()
不啟用 BatchNormalization 和 Dropout
訓練完train樣本後,生成的模型model要用來測試樣本。在model(test)之前,需要加上model.eval(),否則的話,有輸入資料,即使不訓練,它也會改變權值。這是model中含有batch normalization層所帶來的的性質。
在做one classification的時候,訓練集和測試集的樣本分佈是不一樣的,尤其需要注意這一點。
以上這篇pytorch:model.train和model.eval用法及區別詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。