问题描述
加载模型的时候报错:
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/96a09f448226435e8768117bb4efc3f4.png)
然后其他回答说设置strict=False
可以解决,但是设置后出现结果不可复现
的情况
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e6bb53ef4acb426cbeb5c216c389962f.png)
原因分析
strict=False
是不相同的参数不加载,从而不报错,如果参数都不相同,那就都没加载,相当于没加载参数,所以复现不了。
仔细观察报错信息,发现加载的checkpoint
是带module
前缀的。然后就想起了torch.nn.DataParallel
是这么操作的,也就是把模型加载到module
这个属性下
问题解决
在加载模型之前需要提前调用torch.nn.DataParallel
设置模型,然后再加载模型参数
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a61bbdc7f37f4a9f8b0a169ba62065d6.png)