总结经验:

下次移植代码的时候,模型层数不要动(不要想着参数改小提升测试的速度),否则会加载模型报错。就算添加了strict=False之后能运行正常,也会极大降低准确率导致不可用。

问题:

模型从gpu迁移至npu时,出现了加载模型失败loading_state_dict,添加了strict=False之后,运行顺利但是准确率从88%降低到5%

解决方法:

通过对比,发现还是strict=False这个参数导致训练的模型中某些参数没有成功加载导致准确率降低了,所以还是不能加这个参数。

后面通过对比发现:本地gpu运行正确但是npu报错的原因是修改了模型的层数导致的报错

也就是移植代码到npu后,手欠,将parser.add_argument('--num_layers', type=int, default=24, help='layers of modernTCN')中default=24,改为了default=2,导致模型的层数对应不上,所以才报错的,后面使用了strict=False虽然解决了层数的限制,但是由于层数变小,准确率也从88%降低到5%。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐