最近加载函数的时候发生了错误,提示:torch.nn.modules.module.ModuleAttributeError: 'Unet' object has no attribute 'copy'
原因可能是对参数保存和读取没有掌握,保存和加载有两种方式,一种是全部打包,另一种是只保存参数,
# 保存和加载整个模型
torch.save(model_object, 'model.pth')
model = torch.load('model.pth')
# 仅保存和加载模型参数
torch.save(model_object.state_dict(), 'params.pth')
model_object.load_state_dict(torch.load('params.pth'))
个人建议两个都分别保存一下,需要的时候都能用上
torch.save(model, 'net.pth')
torch.save(model.state_dict(), "param_net.pth")
我的原因就是保存了全部,加载的时候用的方式却是只加载参数的方式,所以应该改为
net = torch.load(model_weights, map_location=device)
net.to(device=device)