【ERROR】AttributeError: 'BatchNorm2d' object has no attribute 'track_running_stats'

起因:

一份很久之前(2018年)的項目代碼image caption,今天想重新運行模型測試文件,卻出現瞭如下錯誤

 

報錯信息:

AttributeError: 'BatchNorm2d' object has no attribute 'track_running_stats'

 

報錯位置:

  File "/users4/zsun/pytorch/paper_image_caption/sz-spatial4/modelgru.py", line 33, in forward
    A = self.resnet_conv( images ) #//////# [batch, 2048, 7, 7]
  File "/users4/zsun/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
    result = self.forward(*input, **kwargs)
  File "/users4/zsun/anaconda3/lib/python3.6/site-packages/torch/nn/modules/container.py", line 92, in forward
    input = module(input)
  File "/users4/zsun/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
    result = self.forward(*input, **kwargs)
  File "/users4/zsun/anaconda3/lib/python3.6/site-packages/torch/nn/modules/batchnorm.py", line 75, in forward
    self.training or not self.track_running_stats,*****
  File "/users4/zsun/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 535, in __getattr__
    type(self).__name__, name))
AttributeError: 'BatchNorm2d' object has no attribute 'track_running_stats'*****

 

分析:

注意上面我打上五個星星的位置(*****),可以看到報錯的屬性'track_running_stats'存在python3.6/site-packages/torch/nn/modules/batchnorm.py文件裏,這個文件明顯是pytorch的系統文件。

所以懷疑是這兩年更新了pytorch版本所致。

 

原因:

新的pytorch版本(>0.4)有屬性'track_running_stats',但我的模型是舊的pytorch版本訓練,不具備這個屬性

 

參考博客:

https://blog.csdn.net/jacke121/article/details/81813146

 

解決方法:

1.  建立舊版本pytorch虛擬環境,使該程序像原來一樣運行。

2. 上文提及的博客中,有使老版本兼容新版本的代碼,此處暫時不做驗證。

3. 模型load進來,再存出去???待會試試可不可行

 

決定採用方法2,簡單便捷,省卻很多未來可能出現的麻煩:

conda create -n imagecap python=3.6

 

在新的環境中安裝自己程序所需要的依賴庫(如果有)

 

最後成功運行

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章