如何在Keras中使用Conv2D和LSTM层?

时间:2018-11-27 17:35:54

标签: python keras conv-neural-network lstm rnn

我有一个使用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'])

在Dense层之前添加LSTM层的正确方法是什么?

我尝试使用TimeDistributed或Reshape / Permute,但是我总是遇到错误。

2 个答案:

答案 0 :(得分:0)

您的问题似乎与我昨天提出的问题类似。答案可以在这里找到:Keras functional API: Combine CNN model with a RNN to to look at sequences of images

答案 1 :(得分:0)

deKeijzer用户解释的方法起作用。我找到了解决问题的另一种方法。它是在最后一个Conv2D层之后使用Reshape层(通过(334,35)进行重塑),然后添加LSTM层。