首页 文章

PyTorch LSTM中“隐藏”和“输出”之间有什么区别?

提问于
浏览
21

我无法理解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的单元格状态的张量

似乎变量 outputh_n 都给出了隐藏状态的值 . h_n 只是冗余地提供已经包含在 output 中的最后一个时间步,还是还有更多的东西呢?

1 回答

  • 38

    我做了一个图表 . 这些名称遵循PyTorch docs,但我将 num_layers 重命名为 w .

    output 包含最后一层中的所有隐藏状态("last"深度方式,而不是时间方式) . (h_n, c_n) 包含最后一个时间步之后的隐藏状态,t = n,因此您可以将它们提供给另一个LSTM .

    LSTM diagram

    批量维度不包括在内 .

相关问题