我在查看以下代码:
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'))
第一层的输出维度是6,为什么下一层的输入维度是1?
编辑
代码是错误的,Keras尽力处理了,如实际生成的模型所示(注意模型与代码不符):
回答:
这段代码非常混乱,不应该这样写。
在顺序模型中,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
已被弃用:
请将您的
LSTM
调用更新为Keras 2 API:LSTM(input_shape=(None, 1), return_sequences=True, units=6)
请将您的
LSTM
调用更新为Keras 2 API:LSTM(input_shape=(None, 1), return_sequences=False, units=6)