文档说
h_n of shape(num_layers * num_directions,batch,hidden_size):包含t = seq_len隐藏状态的张量
现在, batch 和 hidden_size 维度几乎是不言自明的 . 不过,第一个维度仍然是一个谜 .
我假设所有层的所有"last cells"的隐藏状态都包含在此输出中 . 但那么"uppermost layer"中"last cell"的隐藏状态的索引是什么? h_n[-1]
? h_n[0]
?
输出是否受 batch_first
选项的影响?
1 回答
在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
对隐藏状态形状没有影响 .