1、请首先检查自己是不是没有将原来的模型参数成功导入
- 你以为你导入成功了,但是注意,你load_state_dict时,如果用了strict=False是不会报错的,所以如果你没有仔细核对参数名是否正确(主要针对有使用预训练模型参数的情况,这时参数名称容易与你的模型有出入)
- 仔细检查自己的模型是不是按checkpoint['net']格式存储的,如果是,你直接导入checkpoint肯定不行啊
2、如果训练时一直不变,注意应该加载模型参数前就定义优化器
参考【python模型保存之后,再恢复训练如何做】_权侑莉老婆的博客-CSDN博客
3、加载后准确率很低,尤其是测试验证集准确率时准确率都很低,多半是因为标签问题。
先要检查自己的标签是否是固定的,可能会出现两次训练标签不一致的情况。
4、想要继续训练时,完全与之前保持相同的走势,需要加载优化器参数、步长scheduler、epoch,可参考PyTorch实现断点继续训练 - 知乎
5、构造optim对象时可以先做好模型的cuda()操作(这个我认为不一定,但是可以参考)
Pytorch 深度学习 模型训练 断点继续训练时损失函数恶化或与断点差异较大_周博士的博客-CSDN博客
6、测试图片时记得把模型调成eval()模型文章来源:https://www.toymoban.com/news/detail-641598.html
7、如果要放到多gpu上训练,使用torch.nn.parallel.DistributedDataParallel前一定要加载好模型参数,(因为DDP后模型参数都加上了modules,这样加载参数时如果使用strict=False就自动没有加载了)文章来源地址https://www.toymoban.com/news/detail-641598.html
到了这里,关于模型参数加载后继续训练或测试,准确率下降很多或者一直不变的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!