首先放上来下面两张经典的图,有助于理解LSTM网络结构。
这两张是比较LSTM网络内的计算图,值得一提的是在第一张图中,虽然有三个绿框,但实际上是不同时刻下的同一个LSTM网络,共享权重参数,该网络包含4个小黄框(代表4个神经元,4个激活函数,4个权重矩阵),这4个权重矩阵在不同时刻是共享。
与之类似,第三张图如下所示,在四个时刻虽然展开了,但仍然是同一个LSTM网络。图三用MLP的形式表达了图一绿框中的四个神经元的作用(四个神经元组成一层网络)。
下图四的每条横向蓝框,都是图三。竖向的depth其实就是torch中的num_layers,这个num_layers才是真正的LSTM网络的层数,因为每层不同时刻都是同一个LSTM网络。
值得一提的是,关于output和
h
c
h_c
hc,
c
n
c_n
cn的区别,从下图可看到,output就是最后一个layer上,序列中每个时刻(横向)状态h的集合。而
h
c
h_c
hc实际上是每个layer最后一个状态(纵向)的拼接。也就是说
h
n
h_n
hn[-1, :, :]就是output[-1, :, :]。