如何在 Keras 中使用 Conv2D 和 LSTM 层?
How to use Conv2D and LSTM layers with Keras?
我有一个使用 Keras 与 Conv2D 配合使用的模型,但我想 添加一个 LSTM 层。这是我正在使用的数据:
- x_train 形状为 (13984, 334, 35, 1)
- y_train 形状为 (13984, 5)
我没有 LSTM 的模型是:
inputs = Input(name='input',shape=(334,35,1))
layer = Conv2D(64, kernel_size=3,activation='relu',data_format='channels_last')(inputs)
layer = Flatten()(layer)
predictions = Dense(5, activation='softmax')(layer)
network = Model(inputs=inputs, outputs=predictions)
network.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
在密集层之前添加 LSTM 层的正确方法是什么?
我尝试使用 TimeDistributed 或 Reshape/Permute,但我总是出错。
看来你的问题和我昨天的问题很相似。答案可以在这里找到:Keras functional API: Combine CNN model with a RNN to to look at sequences of images
用户 deKeijzer 解释的方法有效。我找到了另一种解决问题的方法。它是在最后一个 Conv2D 层之后使用一个 Reshape 层(通过 (334,35) 重塑),然后添加 LSTM 层。
我有一个使用 Keras 与 Conv2D 配合使用的模型,但我想 添加一个 LSTM 层。这是我正在使用的数据:
- x_train 形状为 (13984, 334, 35, 1)
- y_train 形状为 (13984, 5)
我没有 LSTM 的模型是:
inputs = Input(name='input',shape=(334,35,1))
layer = Conv2D(64, kernel_size=3,activation='relu',data_format='channels_last')(inputs)
layer = Flatten()(layer)
predictions = Dense(5, activation='softmax')(layer)
network = Model(inputs=inputs, outputs=predictions)
network.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
在密集层之前添加 LSTM 层的正确方法是什么?
我尝试使用 TimeDistributed 或 Reshape/Permute,但我总是出错。
看来你的问题和我昨天的问题很相似。答案可以在这里找到:Keras functional API: Combine CNN model with a RNN to to look at sequences of images
用户 deKeijzer 解释的方法有效。我找到了另一种解决问题的方法。它是在最后一个 Conv2D 层之后使用一个 Reshape 层(通过 (334,35) 重塑),然后添加 LSTM 层。