RNN 输入维度!火炬

时间:2021-04-26 17:57:53

标签: pytorch recurrent-neural-network tensor

在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])

1 个答案:

答案 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)

对我来说效果很好。我不确定是什么问题,但它可能在您的代码中的其他地方。