LSTM
个人认为明白如何计算一个网络的参数个数,对于理解一个网络的流程特别重要。

首先声明:
- 参数个数与steps无关
- $h_t$的维度与$c_t$相同
- 两个门来控制状态 $c_t$ ,一个门来控制状态 $c_t$ 对输出的影响。
- 有四个交互的层,也就是拥有四组【w,b】参数;所以$总参数个数= (w的元素个数 + b的元素个数)*4$
- 向量经过激活函数后,仍是一个向量:对向量中的每一个元
从上图中可以看出,每个交互的层的操作大致是一样的
重点:计算出w,b的维度,就计算出参数个数了。
素分别操作,主要都是
$$w\times[ ]+b$$
然后再激活函数,再与状态$c$作用,与参数有关的就是 $w\times[ ]+b$。
因为输入输出向量的维度都是我们提前规定好的,假设维度是:
$$ x:2024\times1,h维度=c维度=50\times1 $$
所以,根据公式:已知
$$ W \times [h;x]_{(2014+50\times 1)} + b =输出维度50\times 1 $$
其中$[h;x]维度=(2014+50\times 1),w、b$ 的维度是想要推出的
所以,可以根据矩阵运算中的维度对应倒推出 $w、b$ 的维度:
$$ w: 50\times2074, b:50\times1 $$
四组【w,b】,所以总参数:
$$ 4\times(50\times2074+50)= 415000 $$