加载模型报错Missing key(s) in state_dict:

引用

说明:比如我们之前定义的一个模型model_1,训练之后保存了模型参数,命名为checkpoint_1;然后我们在model_1的基础上修改了模型,在内部添加了一些新的参数(或者更改了参数的名称),命名为model_2,训练之后保存了模型参数,命名为checkpoint_2。
一般而言,我们在测试时,使用的模型model,要加载相应的模型参数信息,即checkpoint。
1,如果我们使用的模型是model_1,而加载的模型参数是checkpoint_2,这时可能会出现Unexpected key(s) in state_dict: …这类错误。因为checkpoint_2内保存的模型参数是model_2的参数,而model_2是在model_1的基础上添加了一些参数,我们把模型参数checkpoint_2加载到模型model_1上,就会多出一些不能匹配的参数。
2,如果我们使用的模型是model_2,而加载的模型参数是checkpoint_1,这时可能会出现Missing key(s) in state_dict: …这类错误。因为checkpoint_1内保存的模型参数是model_1的参数,而model_1要比model_2内部少一些参数,我们把模型参数checkpoint_1加载到模型model_2上,就会出现缺少参数这类错误。
3,如果是更改了model中参数的名称,可能会同时出现上述两种错误。如上述代码中所显示错误!

我遇到的问题是:
RuntimeError: Error(s) in loading state_dict for BertModel:
Missing key(s) in state_dict: “embeddings.position_ids”.
解决方法:
self.bert.load_state_dict(ckpt[“bert-base”], False)

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值