解决RuntimeError: Error(s) in loading state_dict for ResNet: Missing key(s) in state_dict: “conv1.0...

这篇具有很好参考价值的文章主要介绍了解决RuntimeError: Error(s) in loading state_dict for ResNet: Missing key(s) in state_dict: “conv1.0...。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

在多GPU环境下用Pytorch训练的Resnet分类网络


问题描述

卷积神经网络ResNet训练好之后,测试环境或测试代码用了单GPU版或CPU版,在加载网络的时候报错,报错处代码为:

net.load_state_dict(torch.load(args.weights))

报错如下:

RuntimeError: Error(s) in loading state_dict for ResNet: 
	Missing key(s) in state_dict: "conv1.0.weights", "conv1.1.weights", "conv1.1.bias", ...

原因分析:

出现这种报错的原因主要是,state_dict加载模型权重时,参数不匹配。可能是PyTorch版本环境不一致、torch.nn.DataParallel()关键字不匹配、训练环境与测试环境GPU不同。

我遇见这种报错,一次是因为GPU进行训练,CPU进行测试;另一次是多GPU进行训练,测试时对GPU部分的处理,没有按照训练时做多GPU处理,是单GPU。


解决方案:

情况一:多GPU训练,测试时代码为单GPU
解决方案:在环境中定义GPU为多GPU,定义关键字torch.nn.DataParallel()

import torch.nn as nn
import os

os.environ["CUDA_VISIBLE_DEVICES"] = "0, 1, 2, 3"

if __name__ == '__main__':
	# 此处为测试代码对接收参数的初始化
	parser = argparse.ArgumentParser()
	parser.add_argument('-gpu', action='store_true', default=True, help='use gpu or not')
	......
	......
	......

	# 加载网络
	net = get_network(args)
	
	# 以下为多GPU环境增加代码,以解决本博客中提到的报错问题
	net = net.cuda()
	net = nn.DataParallel(net, device_ids=[0, 1, 2, 3])
	
	# 以下为原始测试代码部分
	net.load_dict(torch.load(args.weights))
	net.eval()
	......
	......
	......
		

情况二:GPU训练,测试时代码为CPU
解决方案:在加载模型权重时,设置 map_location='cpu'

if __name__ == '__main__':
	# 此处为测试代码对接收参数的初始化
	parser = argparse.ArgumentParser()
	parser.add_argument('-gpu', action='store_true', default=True, help='use gpu or not')
	......
	......
	......

	# 加载网络
	net = get_network(args)
	
	
	# 以下为原始测试代码部分
	# net.load_dict(torch.load(args.weights))
	# 改为cpu模式
	net.load_dict(torch.load(args.weights, map_location='cpu'))
	net.eval()
	......
	......
	......
		

情况二还有可能出现的报错提示如下:

RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.

参考博文:

please use torch.load with map_location=torch.device(‘cpu‘) to map your storages to the CPU.

还有训练与测试参数不匹配的情况可以参考博文:

【错误记录】RuntimeError: Error(s) in loading state_dict for DataParallel: size mismatch for module文章来源地址https://www.toymoban.com/news/detail-401696.html

到了这里,关于解决RuntimeError: Error(s) in loading state_dict for ResNet: Missing key(s) in state_dict: “conv1.0...的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 报错解决:RuntimeError: Error compiling objects for extension和nvcc fatal: Unsupported gpu architecture

    博主的软硬件环境(供参考): Linux NVIDIA GeForce RTX 3090 CUDA Driver version 515.76 CUDA 10.2 gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 Pytorch 1.10.0+cu102 博主在配置mmdetection3d环境时,运行 pip install -v -e . 会有如下报错: 可能的原因和解决方法如下: 查看GPU的型号: 首先查看cuda版本 输出如下,

    2024年02月13日
    浏览(26)
  • Vue报错解决[Vue warn]: Error in render: “TypeError: Cannot read property ‘state‘ of undefined“

    Vue2项目中报错: [Vue warn]: Error in render: “TypeError: Cannot read property ‘state’ of undefined” [Vue warn]: Error in mounted hook: “TypeError: Cannot read property ‘dispatch’ of undefined” 这个错误提示通常出现在 Vue 组件中,它尝试读取 Vuex store 的 state 对象,但是该对象没有被定义。这可能是由以

    2024年02月10日
    浏览(44)
  • 解决RuntimeError: CUDA error: no kernel image is available for execution on the deviceCUDA

    解决RuntimeError: CUDA error: no kernel image is available for execution on the deviceCUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect. 在服务器复现代码的时候,遇到了上述错误,解决办法如下。 .bashrc文件在服务器上初始页面的配置文件的地方 参考:

    2024年02月16日
    浏览(30)
  • [已解决]RuntimeError: CUDA error: no kernel image is available for execution on the device

    在ubuntu服务器上用python炼丹的时候遇到的两个问题,一个warning和一个runtimeErro,我的环境是用conda配置的,我就切换了一下环境,然后切回来就报这两个错误,期间啥也没干,之前重新安装opencv疯狂报错也是这种样子的。 warning warning:NVIDIA GeForce RTX 3090 with CUDA capability sm_86

    2024年02月02日
    浏览(49)
  • RuntimeError:CUDA error:no kernel image is available for execution on the device报错解决(亲测)

    调试Transformer网络,安装完timm包之后,运行程序时报错 CUDA error:no kernel image is available for execution on the device ,如图所示: 网上对于该错误说啥的都有,因为这是第一次遇到这个错误,之前训练CNN也正常,排除显卡算力低,不支持高版本CUDA问题。看来看去,这位博主说的有道

    2024年02月11日
    浏览(33)
  • 出现错误(已解决)RuntimeError: CUDA error: no kernel image is available for execution on the device CUDA ker

    为什么把警告po出来,是因为警告可以让我们了解一些有用信息。 首先警告里的内容不可忽略,翻译过来就是NVIDIA RTX GeForce 3060Ti(我使用的服务器)支持的CUDA的算力为8.6,与当前的pytorch的版本不匹配。说白了就是CUDA和pytorch版本不一致。 当前的pytorch版本支持的CUDA的算力为

    2024年02月10日
    浏览(28)
  • 解决Vue报错Error in callback for immediate watcher “height“: “TypeError: Cannot read properties of

    最近在项目中遇到了一个问题,控制台报错Error in callback for immediate watcher \\\"height\\\": \\\"TypeError: Cannot read properties of undefined (reading \\\'style\\\')\\\",找了好久,不知道哪里的错误,最后终于解决了,于是记录一下。 控制台报错,如下所示 这个错误报得莫名其妙,既没告诉你具体位置,也没

    2024年02月11日
    浏览(38)
  • LLM - Model Load_in_8bit For LLaMA

      LLM 量化是将大语言模型进行压缩和优化以减少其计算和存储需求的过程。 博主在使用 LLaMA-33B 时尝试使用量化加载模型,用传统 API 参数控制量化失败,改用其他依赖尝试成功。这里先铺下结论: ◆ Load_in_8bit ✔️ ◆ Load_in_4bit ❌ 直接 load_in_8bit=True 报错: 下载 Accelerate 继续

    2024年02月04日
    浏览(28)
  • RuntimeError: CUDA error: no kernel image is available for execution on the device

    导致的原因一般都是显卡算力和cuda或者torch版本不匹配 比如在conda中安装的pytorch=1.5.0 cuda=10.2 错误:RuntimeError: CUDA error: no kernel image is available for execution on the device 参考pytorch 报错 RuntimeError: CUDA error: no kernel image is available for execution on the device_可豌豆的博客-CSDN博客 则应该安装

    2024年02月15日
    浏览(43)
  • 【已解决】ProxyError: Conda cannot proceed due to an error in your proxy configuration.Check for typos a

    问题描述 ProxyError: Conda cannot proceed due to an error in your proxy configuration. Check for typos and other configuration errors in any \\\'.netrc\\\' file in your home directory, any environment variables ending in \\\'_PROXY\\\', and any other system-wide proxy configuration settings. 解决办法 再次执行即可,常见的情况就是因为网络原因,要

    2024年02月04日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包