1. 程式人生 > 程式設計 >Pytorch evaluation每次執行結果不同的解決

Pytorch evaluation每次執行結果不同的解決

這兩天跑測試圖時,發現用同樣的model,同樣的測試圖,每次執行結果不同;

經過漫長的debug發現,在net architure中有dropout,如下(4):

(conv_block): Sequential(
    (0): ReflectionPad2d((1,1,1))
    (1): Conv2d(256,256,kernel_size=(3,3),stride=(1,1))
    (2): InstanceNorm2d(256,eps=1e-05,momentum=0.1,affine=False)
    (3): ReLU(inplace)
    (4): Dropout(p=0.5)
    (5): ReflectionPad2d((1,1))
    (6): Conv2d(256,1))
    (7): InstanceNorm2d(256,affine=False)
   )

在跑evaluation的時候,因為dropout的存在,每次執行會隨機丟一些中間結果,從而導致最終結果有差異;

可以在evaluation過程中,使用eval() class強制丟掉random的內容,code如下:

self.fake_B = self.netG.eval().forward(self.real_A) 

以上這篇Pytorch evaluation每次執行結果不同的解決就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。