1. 問題:TypeError: 'NoneType' object is not iterable
出現問題代碼處: missing_keys, unexpected_keys = net.load_state_dict(torch.load(model_weight_path))
2. 參考:【Python】python "TypeError: 'NoneType' object is not iterable"錯誤分析
出錯原因:
- 一般是函數返回值爲None,並被賦給了多個變量。
- 將None賦給多個值時,會出現提示:TypeError: 'NoneType' object is not iterable
- 在沒有return語句時,python默認會返回None。
3. 解決:
在train.py文件中 “ctrl+鼠標單擊” 出錯誤代碼處的load_state_dict函數,進入load_state_dict函數的定義文件module.py。看到此函數確實沒有return語句,即沒有返回值。那麼python便會默認返回None。
去掉返回值,把代碼missing_keys, unexpected_keys = net.load_state_dict(torch.load(model_weight_path))改成:
net.load_state_dict(torch.load(model_weight_path)),問題即可解決。
PS:
好像是因爲我的PyTorch版本是0.4.0,版本比較老了,裏面的load_state_dict函數和最新版本的不一樣,而我運行的代碼是別人在PyTorch1.3版本上寫的。 看來應該是PyTorch版本惹的禍。
哎,估計要更新自己的PyTorch版本了。