[英]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.