LSTM如何使output_dim与下一层的input_dim不同?

问题描述 投票:1回答:1

我在看这段代码:

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?

Edit

代码是错误的,Keras只是尽力实现,如实际生成的模型所示(请参阅模型与代码不匹配):enter image description here

python machine-learning keras lstm keras-layer
1个回答
2
投票

这段代码非常混乱,永远不应该这样写。

在顺序模型中,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)

© www.soinside.com 2019 - 2024. All rights reserved.