我只是从一个相当简单的顺序模型中查看Keras模型细节,其中我有一个接一个的多个LSTM层。尽管与后续的LSTM层具有相同的定义,但我惊讶地发现第一层总是有更多的参数。
这里的模型定义清楚地表明了这一点:
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (None, 400, 5) 380
_________________________________________________________________
lstm_2 (LSTM) (None, 400, 5) 220
_________________________________________________________________
time_distributed_1 (TimeDist (None, 400, 650) 3900
_________________________________________________________________
lstm_3 (LSTM) (None, 400, 20) 53680
_________________________________________________________________
lstm_4 (LSTM) (None, 400, 20) 3280
_________________________________________________________________
类似地,在时间分布的密集层之后,接下来的两个相同的LSTM也是如此。
我对LSTM的理解是不正确的,相同的定义不会导致同一层被生成为末尾标记的“重复”,或者我需要理解的参数中是否有其他内容?目前看起来对我来说很奇怪!
任何解释都可以帮助我(a)更好地理解,以及(b)根据这些新知识构建更多高性能模型。
答案 0 :(得分:3)
LSTM的输出仅取决于其units
。
我们看到你的第一层都有5个单位 另外两个有20个单位。
但可训练参数(用于对输入执行计算并带来预期输出的数字),需要考虑有多少输入要素,因为他们必须考虑所有输入在他们的计算中。
输入越大,需要的参数越多。我们可以告诉您输入中有5个以上的功能。对于最后两层,第一层的输入为650,而另一层的输入为20。
在LSTM图层中,正如您在their code中看到的那样,有3组权重:
(units, 4*inputs)
(units,4*units)
(4*units,)
通过一些计算,我们可以推断出您的输入具有形状(None, 400, 13)
Layer (type) Output Shape Param #
========================================================================
input_6 (InputLayer) (None, 400, 13) 0
________________________________________________________________________
lstm_1 (LSTM) (None, 400, 5) 380 = 4*(13*5 + 5*5 + 5)
________________________________________________________________________
lstm_2 (LSTM) (None, 400, 5) 220 = 4*(5*5 + 5*5 + 5)
________________________________________________________________________
time_distributed_1 (None, 400, 650) 3900 = ?
________________________________________________________________________
lstm_3 (LSTM) (None, 400, 20) 53680 = 4*(650*20 + 20*20 + 20)
________________________________________________________________________
lstm_4 (LSTM) (None, 400, 20) 3280 = 4*(20*20 + 20*20 + 20)
________________________________________________________________________
如果您使用密集图层进行测试,您还会看到:
Layer (type) Output Shape Param #
=========================================================
input_6 (InputLayer) (None, 13) 0
_________________________________________________________
dense_1 (Dense) (None, 5) 70 = 13*5 + 5
_________________________________________________________
dense_2 (Dense) (None, 5) 30 = 5*5 + 5
_________________________________________________________
dense_3 (Dense) (None, 650) 3900 = 5*650 + 650
_________________________________________________________
dense_4 (Dense) (None, 20) 13020 = 650*20 + 20
_________________________________________________________
dense_5 (Dense) (None, 20) 420 = 20*20 + 20
=========================================================
不同之处在于密集层不具有重复内核,并且它们的内核不会乘以4.