当前位置: 首页> 汽车> 行情 > wordpress成品网站免费_网站页面设计论文_搜索引擎排行榜前十名_最新seo操作

wordpress成品网站免费_网站页面设计论文_搜索引擎排行榜前十名_最新seo操作

时间:2025/7/14 3:10:33来源:https://blog.csdn.net/yiself/article/details/143340995 浏览次数: 0次
wordpress成品网站免费_网站页面设计论文_搜索引擎排行榜前十名_最新seo操作

问题表现

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

意思是“你的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)
关键字:wordpress成品网站免费_网站页面设计论文_搜索引擎排行榜前十名_最新seo操作

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: