我有一个关于 keras 中 LSTM 的问题。对于以下型号:
model = Sequential()
model.add(LSTM(3, activation='relu', return_sequences=True, input_shape=(2, 1))) #
model.add(LSTM(1, activation='relu')) # , return_sequences=True
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
model.summary()
编译为:
Model: "sequential_14"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_28 (LSTM) (None, 2, 3) 60
_________________________________________________________________
lstm_29 (LSTM) (None, 1) 20
_________________________________________________________________
dense_14 (Dense) (None, 1) 2
=================================================================
训练后,我将以下输入/(预期输出)组合为生成器:
Xv=array([[0.86596249],
[0.71205712],
[0.66377103],
[0.38479495],
[0.17930413]])
Yv=array([ 0. , -0.15390537, -0.04828609, -0.27897608, -0.20549082])
作为模型输入的只是从上述输入中取出的长度为 2 的窗口,因为它应该:
(array([[[0.86596249],
[0.71205712]]]), array([-0.15390537]))
(array([[[0.71205712],
[0.66377103]]]), array([-0.04828609]))
(array([[[0.66377103],
[0.38479495]]]), array([-0.27897608]))
第一个 LSTM 层 lstm_28 的输出是:
[[[0.6350528 0.03059685 0.27147472]
[0.80559087 0.6672701 0.580988 ]]
[[0.56819683 0.0700734 0.23733588]
[0.7769858 0.6412031 0.51144546]]
[[0.5478389 0.08248721 0.22635613]
[0.6315232 0.7412042 0.45036086]]]
为什么这一层的输出没有“移位”?我的意思是,连续步骤 (t+1) 的第一行不是之前步骤 (t) 的第二行。