load_state_dict报错: Error(s) in loading state_dict for XXX: Missing keys(s) in state_dict: ....

博客讲述了在PyTorch中遇到的模型加载权重时的RuntimeError,原因是模型结构与权重文件键名不匹配。解决办法是在测试阶段同样使用nn.DataParallel。还探讨了nn.DataParallel的作用,它用于模型并行计算,可能导致键名变化。另外,作者建议在保存DataParallel模型时使用model.module.state_dict(),以便在推理时不需再使用DataParallel。

1. 报错内容

/opt/tools/anaconda3/lib/python3.8/site-packages/torch/nn/modules/module.py in load_state_dict(self, state_dict, strict)
   1221 
   1222         if len(error_msgs) > 0:
-> 1223             raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
   1224                                self.__class__.__name__, "\n\t".join(error_msgs)))
   1225         return _IncompatibleKeys(missing_keys, unexpected_keys)

RuntimeError: Error(s) in loading state_dict for UNet:
	Missing key(s) in state_dict:................(太多了)
	Unexpected key(s) in state_dict: ................(也很多)

报错

2. 解决方案

train的时候我加了数据并行

# train
model = nn.DataParallel(model)

但是test里没加并行,加上就不会报错了

# test
model = UNet(n_channels=3, n_classes=1)
model = nn.Dat
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值