在pytorch中很难将数据输入到RNN中.. 我之前的线性层的输出维度是 (32,50),其中 32 是批量大小。
我想把它提供给 RNN 层。 我尝试以两种形式重塑我的数据:[32,1,50] 和 [32,50,1] 两次都出现错误。
class trainer:
def __init__():
self.r = nn.RNN(input_size= 50, hidden_size=2, num_layers = 3, batch_first=True)
def forward(self):
previous_layer_output
previous_layer_output.unsqueeze_(-1) Makes shape [32,50,1] # I also tried
#previous_layer_output.unsqueeze_(1) makes shape [32,1,50]
rnn = self.r(previous_layer_output )
我收到此错误:RuntimeError:input.size(-1) 必须等于 input_size。预计 50,得到 1
如果我执行 previous_layer_output.unsqueeze_(1) 我会收到以下错误: ValueError: 预期目标大小 (32, 50),得到 torch.Size([32])
答案 0 :(得分:0)
为了提炼和隔离您的问题,我编写了这段代码。
import torch
from torch import nn
rnn = nn.RNN (input_size=50, hidden_size=2, num_layers=2, batch_first=True)
a = torch.rand(32, 50)
a.unsqueeze_(1)
o = rnn(a)
对我来说效果很好。我不确定是什么问题,但它可能在您的代码中的其他地方。