模型参数加载后继续训练或测试,准确率下降很多或者一直不变

1、请首先检查自己是不是没有将原来的模型参数成功导入

  • 你以为你导入成功了,但是注意,你load_state_dict时,如果用了strict=False是不会报错的,所以如果你没有仔细核对参数名是否正确(主要针对有使用预训练模型参数的情况,这时参数名称容易与你的模型有出入)
  • 仔细检查自己的模型是不是按checkpoint['net']格式存储的,如果是,你直接导入checkpoint肯定不行啊

2、如果训练时一直不变,注意应该加载模型参数前就定义优化器

参考【python模型保存之后,再恢复训练如何做】_权侑莉老婆的博客-CSDN博客

3、加载后准确率很低,尤其是测试验证集准确率时准确率都很低,多半是因为标签问题。

先要检查自己的标签是否是固定的,可能会出现两次训练标签不一致的情况。

4、想要继续训练时,完全与之前保持相同的走势,需要加载优化器参数、步长scheduler、epoch,可参考PyTorch实现断点继续训练 - 知乎

5、构造optim对象时可以先做好模型的cuda()操作(这个我认为不一定,但是可以参考)

Pytorch 深度学习 模型训练 断点继续训练时损失函数恶化或与断点差异较大_周博士的博客-CSDN博客6、测试图片时记得把模型调成eval()模型

7、如果要放到多gpu上训练,使用torch.nn.parallel.DistributedDataParallel前一定要加载好模型参数,(因为DDP后模型参数都加上了modules,这样加载参数时如果使用strict=False就自动没有加载了)

你可能感兴趣的:(python,人工智能,深度学习,pytorch)