【发布时间】:2020-04-26 08:17:48
【问题描述】:
class LSTM(nn.Module):
def __init__(self, input_size=1, output_size=1, hidden_size=100, num_layers=16):
super().__init__()
self.hidden_size = hidden_size
self.lstm = nn.LSTM(input_size, hidden_size, num_layers)
self.linear = nn.Linear(hidden_size, output_size)
self.num_layers = num_layers
self.hidden_cell = (torch.zeros(self.num_layers,12 ,self.hidden_size).to(device),
torch.zeros(self.num_layers,12 ,self.hidden_size).to(device))
def forward(self, input_seq):
#lstm_out, self.hidden_cell = self.lstm(input_seq.view(len(input_seq) ,1, -1), self.hidden_cell)
lstm_out, self.hidden_cell = self.lstm(input_seq, self.hidden_cell)
predictions = self.linear(lstm_out[:,-1,:])
return predictions
这是我的 LSTM 模型,输入是一个 4 维向量。批量大小为 16,时间戳为 12。我想使用 12 个序列向量找到第 13 个向量。我的 LSTM 块有 [16,12,48] 输出。我不明白为什么我选择了最后一个:
out[:,-1,:]
【问题讨论】:
-
之所以选择最后一个
lstm_out[:, -1, :]是因为LSTM之上的线性层会得到最后一个LSTM层的输出作为输入。 -
我的网络收敛于我们的数据集的平均值,有什么理由这样做吗?
标签: python deep-learning sequence lstm