The input_shape
仅第一层需要。后续层将前一层的输出作为其输入(因此它们的input_shape
参数值被忽略)
下面的模型
model = Sequential()
model.add(LSTM(64, return_sequences=True, input_shape=(5, 2)))
model.add(LSTM(32))
代表以下架构
你可以从中验证它model.summary()
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_26 (LSTM) (None, 5, 64) 17152
_________________________________________________________________
lstm_27 (LSTM) (None, 32) 12416
=================================================================
更换线路
model.add(LSTM(32))
with
model.add(LSTM(32, input_shape=(1000000, 200000)))
仍然会给你相同的架构(使用验证model.summary()
)因为input_shape
被忽略,因为它将前一层的张量输出作为输入。
如果您需要如下所示的序列到序列架构
你应该使用以下代码:
model = Sequential()
model.add(LSTM(64, return_sequences=True, input_shape=(5, 2)))
model.add(LSTM(32, return_sequences=True))
应该返回一个模型
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_32 (LSTM) (None, 5, 64) 17152
_________________________________________________________________
lstm_33 (LSTM) (None, 5, 32) 12416
=================================================================