Pytorch解决LSTM前向传播时报错:RuntimeError: input must have 3 dimensions, got 2

完整报错为:RuntimeError: input must have 3 dimensions, got 2

解决方法

前向传播代码中,加入:

def forward(self, x)
	x = x.view(len(x), 1, -1) # 把原有2维度[a,b]改为3维[a,1,b]
	# ......后续的代码

问题解析

比如我定义的LSTM:

class LSTM(nn.Module):
    def __init__(self, input_size=5, hidden_layer_size=100, output_size=1):
		# ....初始化
		pass
    def forward(self, input_x): # input_x.size() 为 [20个数据,5个维度]
        lstm_out, self.hidden_cell = self.lstm(input_x, self.hidden_cell)
        predictions = self.linear(lstm_out.view(len(input_x), -1))
        return predictions[-1]

就会报错,改为如下即正确:

class LSTM(nn.Module):
    def __init__(self, input_size=5, hidden_layer_size=100, output_size=1):
		# ....初始化
		pass
    def forward(self, input_x): # input_x.size() 为 [20个数据,5个维度]
        input_x = input_x.view(len(input_x), 1, -1) # 维度变为 [20,1,5]
        lstm_out, self.hidden_cell = self.lstm(input_x, self.hidden_cell)
        predictions = self.linear(lstm_out.view(len(input_x), -1))
        return predictions[-1]
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值