解决pytorch问题:received an invalid combination of arguments - got

news2024/11/5 14:40:09

问题表现

今天跑模型时报了一个非常奇怪的错误:
在这里插入图片描述

意思是“你的lstm层输入的参数是无效的,要求接收参数的类型是(Tensor, tuple of (Tensor, Tensor), list of [Parameter, Parameter, Parameter, Parameter], float, int, float, bool, bool, bool),但是实际收到的是(Tensor, tuple of (Tensor, Tensor), list of [Parameter, Parameter, Parameter, Parameter], float, int, float, bool,”
为什么奇怪呢?奇怪在于我检查了我lstm的输入张量,size是正确的,并且我还检查了张量的值,确实都是float32类型:
在这里插入图片描述
代码如下

class StudentStatusCommunication(nn.Module):
    def __init__(self, embedding_size, add_size, hidden_size, layer_num, dropout):
        super(StudentStatusCommunication, self).__init__()

        self.linear_layer = nn.Linear(embedding_size+add_size, hidden_size)
        self.activate = nn.ReLU()
        self.loop_layer = nn.LSTM(hidden_size, hidden_size, layer_num, dropout, batch_first=True)

    def forward(self, embedding, add_embedding):
        e = torch.cat((embedding, add_embedding), dim=-1)
        print(f'cat: {e.shape}')
        e = self.linear_layer(e)
        print(f'linear: {e.shape}')
        e = self.activate(e)
        print(f'activate: {e.shape}')
        print(e)

        h_steps, (h_t, c_t) = self.loop_layer(e)
        # 隐藏状态列表, 最后时刻隐藏状态, 最后时刻细胞状态
        return h_t
    

解决方案

问题已经写在报错里了,是参数调用错误,那么参数调用错误在哪呢?
在这里插入图片描述
python在调用函数时,接收参数的方式有两种:1、顺序接收(layer_num);2、通过命名接收(batch_first)。
两种方式可以混用,但有两个前提:

  1. 命名接收方式之后不能再用顺序接收;
  2. 顺序接收前n个参数会依次传递给函数的前n个形参。

现在我们检查nn.LSTM接收参数的顺序:
在这里插入图片描述
可以发现前三个参数都进行了正确地传递,但是第四个参数dropout错误传递给了bias,这就是错误来源!没错,python不支持省略的命名传参方式,即:当实参和形参命名一样时,允许省略命名指向(dropout=dropout可以允许直接写成dropout)。好好好,又是被多语言思维惯性打败的一天
修正这个错误也非常简单,只要添加命名指向就行:

self.loop_layer = nn.LSTM(hidden_size, hidden_size, layer_num, dropout=dropout, batch_first=True)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2230687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot与easypoi(2):合并单元格、二级表头、动态导出

一、纵向合并单元格 使用Excel(needMerge true)标记的属性表示此单元格需要合并。ExcelCollection表示一对多的集合,下面是合并单元格案例。 实体类 企业类: package com.ywz.entity;import cn.afterturn.easypoi.excel.annotation.Excel; import cn.…

vue3 + ts + element-plus 二次封装 el-table

一、实现效果: (1)数据为空时: (2)有数据时:存在数据合并;可自定义表头和列的内容 (3)新增行: (4)删除行: &a…

Python CGI编程-cookie的设置、检索

设置检索 其他: 1. http.cookies和http.cookiejar区别: http.cookies主要用于创建和操作单个cookie对象,适用于需要精细控制单个cookie属性的场景。http.cookiejar则用于管理多个cookie,适用于需要自动处理多个请求和响应中的coo…

k8s 二进制部署安装(三)

目录 部署Calico Calico 工作原理 部署Calico 部署CoreDNS 负载均衡部署 部署dashboard 部署Calico 安装步骤来到 CNI 网络组件 ,在(二)中我们安装了flannel,现在我们要尝试安装另一网络组件Calico calico 不使用隧道或NAT…

idea 创建web工程

模块添加Add Framework Support web Application 改为4.0以上

Linux系列-进程的概念

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 这篇文章,我们主要分析一下进程。 之前,我们讲过了冯诺依曼体系架构, 我们常见的计算机,像笔记本,或者不常见的计算机…

Rust的enum枚举的强大用法

在Rust中,enum(枚举)是一种非常强大的类型,它可以包含多个变体(variants),每个变体可以是不同的类型,包括复杂类型。这使得enum在Rust中不仅用于表示简单的状态或选项集合&#xff0…

【初识Linux】

十点半的飞机快要到了,机场还是那么的拥挤.......................................................................... 文章目录 一、【初识指令】 1、 ls✔ 2、pwd✔ 3、cd✔ 4. touch✔ 5.mkdir✔ 6.rmdir✔ 7、rm ✔ 8.man✔ 9.cp✔ ​10、mv✔ 11、cat✔…

头歌——算法设计与分析(贪心法)

文章目录 第1关:贪心法代码 第2关:最小生成树代码 第3关:Huffman 编码代码 第4关:单源点最短路径代码 第1关:贪心法 相关知识 为了完成本关任务,你需要掌握:贪心法 ;。 贪心法,又称…

面试题:JVM(四)

new对象流程?(龙湖地产) 对象创建方法,对象的内存分配。(360安全) 1. 对象实例化 创建对象的方式有几种? 创建对象的步骤 指针碰撞:以指针为分界线,一边是已连续使用的…

【进阶sql】复杂sql收集及解析【mysql】

开发时会出现,必须写一些较复杂sql的场景 可能是给会sql的客户 提供一些统计sql 或是临时需要统计数据信息但是 开发一个统计功能有来不及的情况 也可能是报表系统组件 只支持 sql统计的情况 特地记录下这些sql 作为积累 substring 截取查询出的字符串&#xff…

Python实现全国岗位招聘信息可视化分析(源码+论文+部署讲解)

项目源码&数据源获取 利用Python实现全国岗位招聘信息可视化分析 项目背景: 1.为企业招聘决策提供科学的依据和参考,可以帮助人力资源部门、招聘机构和求职者了解当前的就业形势、行业趋势和人才需求,从而做出更明智的招聘和求职决策。…

Python毕业设计选题:基于django+vue的宠物寄养平台的设计与实现

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 1. 前台系统功能模块 系统首页界面 用户注册界面 用户登录界面 宠物商城界面 宠物店…

Linux云计算 |【第五阶段】CLOUD-DAY10

主要内容: 部署Dashboard、部署Prometheus、部署HPA集群 一、Dashboard介绍 Dashboard是基于网页的Kubernetes用户界面,可以使用Dashboard将容器应用部署到Kubernetes集群中,也可以对容器应用排错,还能管理集群资源。可以使用Da…

将Notepad++添加到右键菜单【一招实现】

一键添加注册表 复制以下代码保存为 Notepad.reg,将红框内路径修改为自己电脑的“Notepad.exe路径”后,再双击运行即可。 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\NotePad] "Notepad" "Icon""D:\\N…

Git下载-连接码云-保姆级教学(连接Gitee失败的解决)

Git介绍 码云连接 一、Git介绍 二、Git的工作机制 下载链接:Git - 下载软件包 三、使用步骤 创建一个wss的文件夹,作为‘工作空间’ 四、连接码云账号 五、连接Gitee失败的解决方法 一、Git介绍 Git是一个免费的、开源的分布式版本控制…

Spring Boot 与 Vue 共铸卓越采购管理新平台

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

DataFlow v202410 版本更新 一站式数据处理平台

DataFlow 是 OpenCSG 推出的一站式数据处理平台,与 CSGHub 无缝集成,形成数据到模型的全生命周期闭环,助力持续优化。平台兼容多种数据格式与来源,支持本地、云端和网络数据接入,并提供高效转换和读取工具,…

【搜索引擎】俄罗斯搜索引擎yandex

俄罗斯搜索引擎yandex 1997年,俄罗斯搜索引擎Yandex(俄语意为:语言目录)首次上线,已发展成为全球第四大搜索引擎和第二大非英语搜索引擎 https://yandex.com/

电脑没有下载声卡驱动怎么办?电脑声卡驱动安装方法

在日常使用电脑的过程中,我们可能会遇到电脑没有声音的问题,这往往与声卡驱动缺失或损坏有关。声卡驱动是连接电脑硬件(声卡)与操作系统之间的桥梁,确保音频信号能够正常输入输出。那么,当电脑没有声卡驱动…