我在看这段代码:
model = Sequential()
model.add(LSTM(input_shape = (1,), input_dim=1, output_dim=6, return_sequences=True))
model.add(LSTM(input_shape = (1,), input_dim=1, output_dim=6, return_sequences=False))
model.add(Dense(1))
model.add(Activation('linear'))
如何第一层的输出为dim = 6,然后下一层的输入为input_dim = 1?
这段代码非常混乱,永远不应该这样写。
在顺序模型中,Keras仅尊重第一层的input_shape
。所有后续层都使用前一层的输出进行初始化,有效地忽略了input_shape
规范。源代码:keras/models.py
。在这种情况下,它是(None, None, 6)
。
因此,模型摘要如下所示:
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (None, None, 6) 192
_________________________________________________________________
lstm_2 (LSTM) (None, 6) 312
=================================================================
顺便说一下,keras在这个LSTM
规范上吐出警告,因为input_dim
已被弃用:
更新您对Keras 2 API的
LSTM
调用:LSTM(input_shape=(None, 1), return_sequences=True, units=6)
更新您对Keras 2 API的
LSTM
调用:LSTM(input_shape=(None, 1), return_sequences=False, units=6)