我无法理解PyTorch的LSTM模块(以及类似的RNN和GRU)的文档 . 关于产出,它说:
输出:输出,(h_n,c_n)输出(seq_len,batch,hidden_size * num_directions):包含来自RNN最后一层的输出要素(h_t)的张量,每个t . 如果已将torch.nn.utils.rnn.PackedSequence作为输入,则输出也将是打包序列 . h_n(num_layers * num_directions,batch,hidden_size):包含t = seq_len c_n(num_layers * num_directions,batch,hidden_size)的隐藏状态的张量:包含t = seq_len的单元格状态的张量
似乎变量 output
和 h_n
都给出了隐藏状态的值 . h_n
只是冗余地提供已经包含在 output
中的最后一个时间步,还是还有更多的东西呢?
1 回答
我做了一个图表 . 这些名称遵循PyTorch docs,但我将
num_layers
重命名为w
.output
包含最后一层中的所有隐藏状态("last"深度方式,而不是时间方式) .(h_n, c_n)
包含最后一个时间步之后的隐藏状态,t = n,因此您可以将它们提供给另一个LSTM .批量维度不包括在内 .