引言
今天来分析下Pytorch中RNN输出值中的h_n和output是什么。
正文

(来自stackoverflow nnnmmm的回答)
以Pytorch LSTM为例,结构图如上。
(上图没有体现双向的,双向的后面讲)
注意dropout是应用于堆叠层之间的,最后一层时不应用的。
以上图来说,第一层(说的是堆叠的层数,而不是时间步)的隐藏层的输出应用dropout后,当成第二层
的输入。
nn.LSTM构造参数:

必传的参数是前面三个。
 输入/输出:

Pytorch文档中关于输出中output和h_n的理解也可以见此图。

output包含了堆叠层中每个时间步最后一层的隐藏状态,即上图中的(原作者替换了
和
)。
h_n 包含的是最后一个时间步每层的隐藏状态。
最后,补充一下双向的描述。

双向RNN相当于两个独立的RNN,一个按从前往后读,另一个从后往前读。这样每个时间步都同时有两个输出,将这两个输出取平均就得到最终的输出。
 并且每个最终的输出都是考虑了整个序列的结果,比如,正向RNN看了
,反向RNN看了
。
                
 
 
                     
            
        













 
                    

 
                 
                    