文章目录

  • Missing key(s) in state_dict 报错分析
    • 该报错快速直接解决方法
    • 额外思路
  • 【Unexpected key(s) in state_dict】- 解决思路

Missing key(s) in state_dict 报错分析


在执行 yolov3 pytorch 模型加载时遇到如下报错


类似报错之前其实也遇到过,今天总结一下

  • 所运行代码
    # Initialize modelmodel = Darknet(opt.cfg, imgsz)# Load weightsattempt_download(weights)if weights.endswith('.pt'):  # pytorch formatmodel.load_state_dict(torch.load(weights, map_location=device)['model'])
  • 遇到的报错大致如下
RuntimeError: Error(s) in loading state_dict for Darknet:Missing key(s) in state_dict: "total_ops", "total_params", # 或者RuntimeError: Error(s) in loading state_dict for DataParallel:Missing key(s) in state_dict: "module.total_ops", "module.total_params",
  • 官方文档链接

该报错快速直接解决方法

model.load_state_dict 方法默认 strict=True


model.load_state_dict 时设置 strict=False 即可解决该报错


这种方式适合,模型本身没有什么问题,只是多了一些推理时不需要的 类似 "module_list.total_ops", "module_list.total_params", "module_list.0.total_ops", "module_list.0.total_params" 相关的统计变量

  • 代码修改如下
model.load_state_dict(torch.load(weights, map_location=device)['model'], strict=False)
  • python3 detect.py --source data/samples/ --device 0,1 --weights weights/yolov3-spp.pt 成功执行输出如下

Namespace(agnostic_nms=False, augment=False, cfg='cfg/yolov3-spp.cfg', classes=None, conf_thres=0.3, device='0,1', fourcc='mp4v', half=False, img_size=512, iou_thres=0.6, names='data/coco.names', output='output', save_txt=False, source='data/samples/', view_img=False, weights='weights/yolov3-spp.pt')Using CUDA device0 _CudaDeviceProperties(name='Quadro RTX 5000', total_memory=16125MB)device1 _CudaDeviceProperties(name='Quadro RTX 5000', total_memory=16125MB)return torch.max_pool2d(input, kernel_size, stride, padding, dilation, ceil_mode)
Model Summary: 225 layers, 6.29987e+07 parameters, 6.29987e+07 gradients, 118.0 GFLOPS
image 1/3 data/samples/bus.jpg: 512x384 4 persons, 1 buss, Done. (0.014s)
image 2/3 data/samples/dog.png: 384x512 1 bicycles, 1 trucks, 1 dogs, Done. (0.013s)
image 3/3 data/samples/zidane.jpg: 288x512 2 persons, 2 ties, Done. (0.012s)Results saved to /home/zql/project/project21Next/yoloDir/yolov3/output
Done. (0.179s)

额外思路

提供这样一个思路,这种方法在该代码中,又遇到其它报错,但理论上它应该是可用的一种思路

相关代码

    # Initialize modelmodel = Darknet(opt.cfg, imgsz)# Load weightsattempt_download(weights)if weights.endswith('.pt'):  # pytorch formatmodel.load_state_dict(torch.load(weights, map_location=device)['model'], strict=False)torch.save(model, 'weights/yolov3-spp-again.pt')# model.load_state_dict(torch.load(weights, map_location=device)['model'], strict=True)else:  # darknet formatload_darknet_weights(model, weights)

【Unexpected key(s) in state_dict】- 解决思路


其它博客资料了解到的报错原因

  • 在训练的时候,使用了多卡联合训练,导致 权重 keys 多了一个 前缀【之前有遇到这样的情况】

解决思路:遍历修改 keys ,去掉前缀 【更为通用】 | 或者在 缺少前缀的一方 添加 keys


这种情况,具体示例,下次遇到再做补充

去掉前缀 的代码思路如下

model_resnet101 = get_net()
model_resnet101.cuda()
model_resnet101.load_state_dict({k.replace('module.',''):v for k,v in torch.load("densenet169_rnn_fold_1_model_best_f1.pth.tar")['state_dict'].items()})

Missing key(s) in state_dict | unexpected_keys | 模型加载 [torch.load] 报错【解决方案】相关推荐

  1. vue 动态加载图片路径报错解决方法

    vue 动态加载图片路径报错解决方法 参考文章: (1)vue 动态加载图片路径报错解决方法 (2)https://www.cnblogs.com/qingcui277/p/8930507.html ...

  2. MTK的Flashtool 加载scatter-loading是报错

    Flashtool 加载scatter-loading是报错: Image UBOOT checksum failed! Checksum reference value(0xf6b7)in the ...

  3. 报错解决:加载数据库驱动报错-Loading class `com.mysql.jdbc.Driver‘. The new driver class is `com.mysql.cj.jdb

    Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.D ...

  4. 深度学习——09模型的保存:torch.save()、加载:torch.load()

    两种方式 保存模型主要分为两类: 1.保存整个模型 2.保存模型参数 1.第一种 结构模型+模型参数 保存整个网络模型,加载整个网络模型(可能比较耗时) # 保存方式1 torch.save(vgg1 ...

  5. Maven 加载ojdbc14.jar报错,解决方法

    因为oracle的ojdbc.jar是收费的,所以maven的中央仓库中没有这个资源,只能通过配置本地库才能加载到项目中去. 首先下载 ojdbc14  https://pan.baidu.com/s ...

  6. Android开发之WebView加载自定义scheme报错net::ERR_UNKNOWN_URL_SCHEME(附带源码标题下面可点击下载)

    咱们先看下报错结果图: 我这边是华为荣耀7i手机才出现这个情况,总结得出结论android6.0以上加载自定义scheme会报错如下,6.0以下貌似不会 三星和模拟器没有可以直接加载这个url ,网页 ...

  7. vue-element-admin动态加载接口和报错解决

    需要修改的文件只有两个: 修改文件\src\router\index.js  和 修改文件 src\store\modules\permission.js  接口可以放在user.js里面 1. \s ...

  8. MindSpore数据集加载-GeneratorDataset数据处理报错:The pointer[cnode] is null

    MindSpore可以自定义Python数据源,通过迭代该数据源构造数据集.有点类似PyTorch的DataLoader. 相关的API可以参考:mindspore.dataset.Generator ...

  9. 加载.node文件报错:no suitable image found. unknown file type, first eight bytes

    背景 electron-vue构建的工程在打包的时候报错如下: Uncaught Error: Cannot open /Users/mac/Desktop/file/zl/git_project/n ...

最新文章

  1. 一次深夜优化,MySQL亿级数据分页的奇妙经历
  2. 产品经理必了解的3个app技术框架
  3. SpringBoot+Vue使用Get请求时提示:Error parsing HTTP request header
  4. 路径总和 III—leetcode437
  5. 一条SQL语句查询数据库中的所有表、存储过程、触发器
  6. TableView Within Alert
  7. 忘记root密码后怎么解决?克隆虚拟机后如何实现两台linux相互登录?
  8. Oracle事务隔离级别
  9. 有什么软件可以把视频上下拼接在一起?
  10. VAX插件、vs2012
  11. 矩阵的 Jordan 标准型
  12. db2配置、db和dbm
  13. tan(x)的四阶麦克劳林级数
  14. NVIDIA-TLT训练行人检测模型(一)----算法模型的训练(finetuning)
  15. 转:为什么谷歌越来越牛逼,而百度却...
  16. 【洛谷】 P1240 诸侯安置(递推)
  17. EndNote软件使用
  18. MATLAB MAT文件
  19. 【流式细胞仪软件】上海道宁为您带来FCS Express,让您轻松缩小流式细胞术和结果之间的差距
  20. 【毕业设计】基于单片机的智能饮水机系统 - stm32 物联网 嵌入式

热门文章

  1. Linux常用命令ens33网卡配置
  2. css伪类与伪元素的区别
  3. ARFoundation系列讲解 - 34 AR看车一
  4. 阿里敏捷教练如何优化优酷需求分析流程?
  5. 面向对象程序设计步骤
  6. S32K的flexcan组件使用(RxFIFO+中断)
  7. DONE Build complete. The dist directory is ready to be deployed.
  8. Vue用localStorage保存搜索历史记录/清空记录
  9. 【读点论文】Unified Perceptual Parsing for Scene Understanding 整合学习数据集的关系,用图像级标注完成像素级的事
  10. 经典语录,经常看看感悟人生!