Pytorch evaluation每次執行結果不同的解決
阿新 • • 發佈:2020-01-09
這兩天跑測試圖時,發現用同樣的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每次執行結果不同的解決就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。