1. 程式人生 > 程式設計 >pytorch掉坑記錄:model.eval的作用說明

pytorch掉坑記錄:model.eval的作用說明

訓練完train_datasets之後,model要來測試樣本了。在model(test_datasets)之前,需要加上model.eval(). 否則的話,有輸入資料,即使不訓練,它也會改變權值。

這是model中含有batch normalization層所帶來的的性質。

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

補充知識:pytorch測試的時候為何要加上model.eval()

Do need to use model.eval() when I test?

Sure,Dropout works as a regularization for preventing overfitting during training.

It randomly zeros the elements of inputs in Dropout layer on forward call.

It should be disabled during testing since you may want to use full model (no element is masked)

使用PyTorch進行訓練和測試時一定注意要把例項化的model指定train/eval,eval()時,框架會自動把BN和DropOut固定住,不會取平均,而是用訓練好的值,不然的話,一旦test的batch_size過小,很容易就會被BN層導致生成圖片顏色失真極大!!!!!!

以上這篇pytorch掉坑記錄:model.eval的作用說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。