今天在调试别人的代码时遇到了以上两个问题,按顺序来:
1.torch.load()报错no module named"X"
分析原因,是环境变量问题
在出错的代码中,最开始调用时增加如下代码:
import sys
sys.path.append(missing_path)
代码中missing_path改为报错缺少的模块 X(可能是代码中的文件名,仔细找找) 的上层路径(绝对/相对路径都可以)
问题解决,但是紧接着又遇到下面这个问题:
2.'model' object has no attribute 'copy'
分析原因,是torch保存和加载模型时候没有保持一致。
如:
方法一:
保存整个模型:
torch.save(model,'save.pt')
#加载模型
torch.load('save.pt')
方法二:
保存训练好的权重:
torch.save(model.state_dict(), 'save.pt')
#加载模型
model.load_state_dict(torch.load("save.pt"))
这种时候你得深入代码去看看自己导入的模型是用的哪种方式保存的,而报错的代码中是如何加载的,做到对应,这样就解决了。
以上,供大家参考。