1. 程式人生 > 程式設計 >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()

model.train()

啟用 BatchNormalization 和 Dropout

model.eval()

不啟用 BatchNormalization 和 Dropout

訓練完train樣本後,生成的模型model要用來測試樣本。在model(test)之前,需要加上model.eval(),否則的話,有輸入資料,即使不訓練,它也會改變權值。這是model中含有batch normalization層所帶來的的性質。

在做one classification的時候,訓練集和測試集的樣本分佈是不一樣的,尤其需要注意這一點。

以上這篇pytorch:model.train和model.eval用法及區別詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。