原因:加载使用模型时和训练模型时的环境不一致
解决办法
将load_state_dict(state_dict) 改成 model.load_state_dict(state_dict, False)
load_state_dict方法参数的官方说明 strict 参数默认是true,他的含义是 是否严格要求state_dict中的键与该模块的键返回的键匹配
当strict
设置为False
,模型加载状态字典时将不会严格检查每个键是否匹配,允许部分加载,这在处理预训练模型或自定义模块时非常有用