文章目录

  • 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. 陆奇首批YC中国门徒:包鱼塘、画动漫、搞汽配…都用AI
  2. JVM 调优系列之图解垃圾回收
  3. mongoose populate 返回 指定 字段
  4. Transformer开始往动态路由的方向前进了!厦大华为提出TRAR,在VQA、REC上性能SOTA!(ICCV 2021)...
  5. RocketMQ如何保证消息顺序消费?又为何不解决消息重复消费问题?
  6. cad的lisp程序大集合_大数据成神之路-Java高级特性增强(CopyOnWriteArraySet)
  7. 字符函数、字符串函数、内存函数用法及其模拟实现
  8. java coroutine类_Coroutines和Rxjava异步编程对比
  9. UML 统一建模语言Unified Modeling Language (UML)
  10. 如何使用iMazing为iPad创建配置文件
  11. Springboot未登录请求拦截器实现
  12. ug如何复制面_了解了一下内容,让你UG快速入门
  13. 小学奥数平均数经典问题汇总
  14. python cryptography key加密_python加密解密库cryptography使用openSSL生成的密匙加密解密...
  15. CNSD在这里记录自己成长
  16. 微信分享多个图片和文字到朋友圈
  17. 加密芯片介绍 加密芯片选择(加密IC) 加密芯片原理
  18. python简易BMI测体重
  19. mac外接显示器 竖屏 黑苹果_借人气问一个黑苹果外接显示器的问题
  20. 国外程序员也都是996么?

热门文章

  1. VR沉浸式安全事故模拟,未来安全教育的最佳选择
  2. 小程序view自动换行
  3. 数据库中的结果集转换为json
  4. 【蓝桥杯每日一题】前缀和算法
  5. kettle缓存清理
  6. 网络安全与基础设施安全局(CISA):两国将在网络安全方面扩大合作
  7. 《JavaScript练习》之表单的输入框当无内容时后面的星号*为默认红色,有内容时为灰色(nextSibling表示获取当前对象在HTML中的下一个对象)
  8. zz 邮件列表的文化与礼节
  9. stream list 分组后组内排序
  10. 如何将WPS里文件的内容转换为图片格式