Python 将批传递到PyTorch模型

Python 将批传递到PyTorch模型,python,pytorch,lstm,Python,Pytorch,Lstm,我正在尝试培训PyTorch LSTM模型,其定义如下: class RecurrentNet(torch.nn.Module): def __init__(self, d_in, d_hidden, sequence_length): super(RecurrentNet, self).__init__() self.d_in = d_in self.d_hidden = d_hidden self.sequence_le

我正在尝试培训PyTorch LSTM模型,其定义如下:

class RecurrentNet(torch.nn.Module):
    def __init__(self, d_in, d_hidden, sequence_length):
        super(RecurrentNet, self).__init__()
        self.d_in = d_in
        self.d_hidden = d_hidden
        self.sequence_length = sequence_length
        self.lstm = torch.nn.LSTM(input_size=d_in,  hidden_size=d_hidden, num_layers=sequence_length)
        self.fc = nn.Linear(d_hidden, 1)
        
    def forward(self, x):
        out, hidden =  self.lstm(x)
        y_pred = F.relu(self.fc(out[-1][-1]))
        return y_pred

model = RecurrentNet(28, 3, l)
我已经以len 32批次的形式准备了我的数据,每个实例的尺寸为6 x 28,即
火炬尺寸([6,28])
。这意味着总输入张量是size
torch.size([32,6,28])
,标签size
torch.size([32,1])

当我将一个实例传递给未经训练的模型时,它会像预期的那样返回一个整数。当我通过32个整数的张量时,它返回:

tensor([0.], grad_fn=<ReluBackward0>)
张量([0.],梯度fn=)
我希望这个输入有一个32x1的输出张量。在准备培训数据时,我是否遗漏了一些内容?

您可能需要向LSTM构造函数添加
batch_first=True
,该构造函数告诉该层它应该首先使用批dim。