在将CRNN-pytorch模型转为libtorch模型的时候出现报错情况,
Missing Errorin loading state_dict for CRNN`
Missing key(s) in state_dict: "cnn.conv0.weight",
这样的错误时,网上推荐的一般是把`model.load_state_dict这个函数的中的第二个参数由True改为False(默认的是True),但是按照网上的教程改了之后,发现还是不行,并且改了之后出现了很多问题,于是就自己查看在train.py文件中是如何保存的模型,保存格式如下所示:
torch.save(
{
"state_dict": model.state_dict(),
"epoch": epoch + 1,
# "optimizer": optimizer.state_dict(),#保存优化器参数
# "lr_scheduler": lr_scheduler.state_dict(),#学习参数
"best_acc": best_acc,
}, os.path.join(output_dict['chs_dir'], "checkpoint_{}_acc_{:.4f}.pth".format(epoch, acc))
这里最重要的是 “state_dict”: model.state_dict()这个地方,这里保存的都是模型的参数,然后再观察推理的时候是如何加载的模型,在demo.py文件中,加载方式如下所示:
model.load_state_dict(checkpoint['state_dict'])
这里的加载方式和网上别人上传的模型转换代码是不一样的,按照demo.py文件里面加载的方式修改,添加上[‘state_dict’]字符段,就可以正常转换了。我的是这样的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)