keras 堆叠 LSTM:当输入在时间步长中移动时,为什么中间层输出没有移动?

时间:2021-04-25 15:37:36

标签: tensorflow keras lstm

我有一个关于 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) 的第二行。

0 个答案:

没有答案