TypeError: load_state_dict() missing 1 required positional argument: ‘state_dict‘

2023-11-08

记录最近遇到的小bug,希望能够帮助到和我有类似错误的你。

1.TypeError: parameters() missing 1 required positional argument: ‘self’

这里是用如下的方法查看model的参数量:

n_parameters = sum(p.numel() for p in model.parameters() if p.requires_grad)
print('number of params:', n_parameters)

完整报错:

Traceback (most recent call last):
  File "train_extract_feature.py", line 283, in <module>
    n_parameters = sum(p.numel() for p in model.parameters() if p.requires_grad)
TypeError: parameters() missing 1 required positional argument: 'self'

报错原因:
出现这个问题的原因是,使用这个方法时,model没有进行实例化。在我的项目中是没有执行model.load_state_dict(new_dict, strict=False)这个函数,就调用了model.parameters()的方法了,所以会出错。应该先load进这个model的weight,然后再使用parameters().

2.TypeError: load_state_dict() missing 1 required positional argument: ‘state_dict’

在使用如下命令语句报错:

 model.load_state_dict(new_dict, strict=False)

完整报错:

Traceback (most recent call last):
  File "train_extract_feature.py", line 322, in <module>
    model.load_state_dict(new_dict, strict=False)
TypeError: load_state_dict() missing 1 required positional argument: 'state_dict'

这是一个我认为很奇怪的报错内容。一开始觉得我明明有state_dict,为什么一直报这个错误呢,接着就想到可能是我的state_dict类型有问题。接下来就依次排查。
首先,检查new_dict是不是dict类型。不同的pre-trained model打包方式是不同的,像我这次的,如果查看new_dict.keys()会发现它是三个keys,epoch,name(记不清是不是name),model,所以想取到model还得用字典取值的方法,如new_dict[‘model’],取出dict类型的model,此时的new_dict[‘model’]中包含的是keys和values。检查无误后还是报相同的错误。
然后,突然想到会不会是因为model的类型不正确导致找不到load_state_dict()方法,于是我比较了能够正常运行的程序和不能正常运行的程序,然后发现model的类型果然是不一样的,心里那个激动呀。。。接着跳转到model定义的地方,发现问题出在继承类,有两个参数是空值。因为在父类中有定义了,因此没有报找不到参数的错误,而是报了这么个奇怪的错误。
中间也怀疑过是不是torch版本的问题,然后将pytorch1.8换成了1.7,没能解决问题,defeat。。。
希望我解决问题的方式能够拓展大家解决问题的思路。
欢迎大家批评指正!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeError: load_state_dict() missing 1 required positional argument: ‘state_dict‘ 的相关文章

随机推荐

  • RabbitMQ重复消费

    造成重复消费的原因 MQ向消费者推送message 消费者向MQ返回ack 告知所推送的消息消费成功 但是由于网络波动等原因 可能造成消费者向MQ返回的ack丢失 MQ长时间 一分钟 收不到ack 于是会向消费者再次推送该条message
  • 每日一题(day1)

    题目链接 方法一 使用栈进行中序遍历 class Solution public int kthSmallest TreeNode root int k stack
  • 决策树算法处理分类及回归问题的原理及python代码实现

    1 决策树原理介绍 通俗的理解 决策树就是对样本集根据某一个维度d和某一个阈值v进行二分 得到二叉树 即为决策树 通过样本训练计算出维度d和阈值v 即可对预测数据进行分类 如果对二叉树的各子节点value值求平均 将平均值赋予待分类样本 即
  • 疯壳-鸿蒙OS单板应用程序开发

    鸿蒙OS单板应用程序开发 疯壳 出品 a 在源码根目录下新建一个testapp的文件夹 在终端输入 mkdir testapp 指令新建一个名为testapp 的文件夹如下 b 进入testapp文件夹 新建一个名为my first app
  • 一个用于拷贝文件并判断是否拷贝成功的批处理文件

    echo off chcp 65001 copy E opencv build x64 vc15 bin opencv videoio ffmpeg420 64 dll windir set err ERRORLEVEL IF err 1
  • pear文件利用 (远程文件下载、生成配置文件、写配置文件) 从一道题看——CTFshow私教 web40

    web40 考点 pear文件包含 pear是PHP的一个扩展 条件 1 有文件包含点 2 开启了pear扩展 可以当他是一个框架 3 配置文件中register argc argv 设置为On 而默认为Off SERVER argv 生效
  • Vue脚手架的创建步骤

    vue cli脚手架 案例一 案例二 一 脚手架简介 Vue脚手架是Vue官方提供的标准化开发工具 开发平台 它提供命令行和UI界面 方便创建vue工程 配置第三方依赖 编译vue工程 1 webpack 前端项目工程化的标志之一就是引入了
  • Robot Arm 机械臂源码解析

    Robot Arm 机械臂源码解析 说明 Robot Arm是我复刻 也是玩的第一款机械臂 用的是三自由度的结构 你可以理解为了三个电机 三轴有自己的一些缺陷 相比于六轴机械臂而言因为结构的缺陷 不能达到空间内的一些点 这些点又叫做奇异点
  • Mybatis Plus入门

    MyBatis Plus介绍 MyBatis Plus 简称MP 是国内人员开发的 MyBatis 增强工具 在 MyBatis 的基础上只做增强不做改变 为简化开发 提高效率而生 特征 无侵入 Mybatis Plus 在 Mybatis
  • 过年不再被逼相亲——我用python给亲戚展示2022的相亲数据

    人生苦短 我用Python 这不是快过年了吗 又到了一年一度的亲戚大考验环节 没对象的他们会问你 找对象了吗 你要是学计算机专业的 他们会问你 会修电脑吗 出去学了点啥他们也会要求 才艺展示一下 我相信大家都躲不过去 既然躲不过去 那直接上
  • 主力吸筹猛攻指标源码_成功率90%以上【主力吸筹+买点提示+使用方法】通达信指标公式源码...

    成功率 90 以上 主力吸筹 买点提示 使用方法 使用方法 当指标出现红绿柱时就要开始关注 未来几天如果紫线上穿黄线 即是买点 紫 线穿过黄线的当天即可买入 此指标成功率极高 90 COLORBLUE VAR1 REF LOW OPEN C
  • 第6章 计算机的运算方法

    6 1无符号数和有符号数 6 1 1无符号数 寄存器位数反映无符号数的表示范围 6 1 2有符号数 1 机器数与真值 真值 带符号的数 机器数 符号数字化的数 2 原码表示法 整数 x 原是n 1位 用逗号将符号位和数值部分分隔开 小数 用
  • 6s微信连接不上服务器失败是什么原因,6s手机微信打不开怎么回事

    很多使用6s手机的用户反应 微信打不开一直显示正在载入怎么办 下面由学习啦小编为你整理了6s手机微信打不开怎么回事的相关方法 希望对你有帮助 6s手机微信打不开解决方法 如图所示 右下角的微信变成这样子 下方显示 正在载入 无法打开 我们首
  • Docker 安装 Nginx

    拉取镜像 docker pull nginx 启动测试 docker run d p 80 80 nginx p 80 80 端口进行映射 将本地 80 端口映射到容器内部的 80 端口 d nginx 设置容器在在后台一直运行 访问主机
  • c++ set容器

    容器分类 1 顺序容器 2 关联容器 3 无序 散列 容器 vector 向量 连续存储的元素 list 链表 由节点组成的双向链表 每个节点包含着一个元素 forward list 单向链表 deque 双队列 由连续存储的指向不同元素的
  • Qt: multiple definition of XXX

    使用Qt编译源文件时出现很多multiple definition of XXX的报错 可能原因是在多次包含global h时重复定义了变量和函数 但检查过代码后 发现并不存在重复定义的变量和函数 这时 只需要清除项目编译 o文件 重新构建
  • 【云原生之Docker实战】使用docker部署家庭DOS游戏服务器

    云原生之Docker实战 使用docker部署家庭DOS游戏服务器 一 DOS游戏网页版介绍 二 检查宿主机系统版本 三 检查本地docker环境 1 检查docker服务状态 2 检查docker版本 四 下载oldiy dosgame
  • C语言入门(基础二)

    延续上作 本篇博客带大家继续入门C语言 运算符 C语言三大结构 顺序结构 选择结构 循环语句 运算符 C语言为我们提供了很多的运算符 有单目运算符 双目运算符和三目运算符 这里的一目二目三目指的是操作的对象个数 我们可以使用这些运算符来解决
  • Kotlin 编程实战

    code小生 一个专注大前端领域的技术平台 公众号回复Android加入安卓技术群 导读 Kotlin诞生于2011年 开源于2012年 吸收了Java等语言的优良特性 提供了令人惊艳的编程体验 是编程语言界名副其实的 后浪 欢迎来到Kot
  • TypeError: load_state_dict() missing 1 required positional argument: ‘state_dict‘

    记录最近遇到的小bug 希望能够帮助到和我有类似错误的你 1 TypeError parameters missing 1 required positional argument self 这里是用如下的方法查看model的参数量 n p