计算LSTM的参数个数需要了解其工作原理,如下:
可以看到若不加偏置,该LSTM层共有4个权重参数,图中输入的一个timestep的特征大小为3(绿色单元),隐藏层输出大小为2(橙色单元),因此该LSTM层的参数个数为:
若加上偏置则该LSTM层的参数个数为:
使用keras的LSTM进行验证
带偏置:
from keras.models import Sequential
from keras.layers import LSTM
timestep = 4 # LSTM层的block个数
model = Sequential()
model.add(LSTM(units=2, use_bias=True, input_shape=[timestep, 3]))
model.summary()
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (None, 2) 48
=================================================================
Total params: 48
Trainable params: 48
Non-trainable params: 0
_________________________________________________________________
不带偏置:
from keras.models import Sequential
from keras.layers import LSTM
timestep = 4 # LSTM层的block个数
model = Sequential()
model.add(LSTM(units=2, use_bias=False, input_shape=[timestep, 3]))
model.summary()
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (None, 2) 40
=================================================================
Total params: 40
Trainable params: 40
Non-trainable params: 0
_________________________________________________________________
以小见大,通过推理可以得到一般的计算方法。