[英]How is the output h_n of an RNN (nn.LSTM, nn.GRU, etc.) in PyTorch structured?
医生说
h_n的形状(num_layers * num_directions,batch,hidden_size):包含t = seq_len的隐藏状态的张量
现在, batch和hidden_size维度几乎是不言自明的。 但是,第一维仍然是个谜。
我假设所有层的所有“最后一个单元”的隐藏状态都包含在此输出中。 但是,例如“最上层”中“最后一个单元”的隐藏状态的索引是什么? h_n[-1]
? h_n[0]
?
输出受batch_first
选项影响吗?
pytorch中LSTM和GRU的实现自动包括LSTM和GRU的堆叠层的可能性。
您可以使用关键字nn.LSTM(num_layers=num_layers)
作为参数。 num_layers
是您拥有的堆叠LSTM(或GRU)的数量。 默认值为1,这为您提供了基本的LSTM。
num_directions
是1或2。对于普通LSTM和GRU,它是1,对于双向RNN,它是2。
因此,在您的情况下,您可能有一个简单的LSTM或GRU,因此num_layers * num_directions
的值将为1。
h_n[0]
是最底层(接受输入的那一层)的隐藏状态,是h_n[-1]
是最顶层(输出网络的输出那一层)的隐藏状态。
batch_first
将批次维放在时间维之前(默认为时间维在批次维之前),因为隐藏状态没有时间维, batch_first
对隐藏状态形状没有影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.