Python 将批传递到PyTorch模型
我正在尝试培训PyTorch LSTM模型,其定义如下: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
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])
。这意味着总输入张量是sizetorch.size([32,6,28])
,标签sizetorch.size([32,1])
当我将一个实例传递给未经训练的模型时,它会像预期的那样返回一个整数。当我通过32个整数的张量时,它返回:
tensor([0.], grad_fn=<ReluBackward0>)
张量([0.],梯度fn=)
我希望这个输入有一个32x1的输出张量。在准备培训数据时,我是否遗漏了一些内容?您可能需要向LSTM构造函数添加
batch_first=True
,该构造函数告诉该层它应该首先使用批dim。