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版本了。