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

我在理解PyTorch的LSTM模块(以及类似的RNN和GRU)的文档时遇到了麻烦。关于输出,它说:

输出:输出,(h_n,c_n)

  • 输出(seq_len,batch,hidden_size * num_directions):张量,包含每个t的RNN最后一层的输出特征(h_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已经包含的最后一个时间步长,还是还有其他东西呢?

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

我做了一个图。尽管我将num_layersnum_layersw ,但是名称遵循PyTorch文档

output包括最后一层中的所有隐藏状态(“最后”深度方向,而不是时间方向)。 (h_n, c_n)包含最后一个时间步t = n之后的隐藏状态,因此您可以将它们隐藏到另一个LSTM中。

LSTM图

不包括批次尺寸。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号