Python 如何将RNN与CNN结合?

Python 如何将RNN与CNN结合?,python,keras,deep-learning,conv-neural-network,lstm,Python,Keras,Deep Learning,Conv Neural Network,Lstm,我正试图将LSTM与CNN结合起来,但由于一个错误,我被卡住了。 以下是我试图实现的模型: model=Sequential() model.add(Conv2D(32, (3, 3), input_shape=(28, 28,3), activation='relu')) model.add(Conv2D(32, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(32,

我正试图将LSTM与CNN结合起来,但由于一个错误,我被卡住了。 以下是我试图实现的模型:

model=Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(28, 28,3), activation='relu'))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(32, activation='relu'))
model.add(LSTM(128, return_sequences=True,input_shape=(1,32), activation='relu'))
model.add(LSTM(256))
model.add(Dropout(0.25))
model.add(Dense(37))
model.compile(loss='categorical_crossentropy', optimizer='adam')
错误发生在第一个LSTM层:

ERROR: Input 0 is incompatible with layer lstm_12: expected ndim=3, found ndim=2

LSTM层的输入应该是一个表示序列或时间序列的3D数组(这就是错误试图说的:
expected ndim=3
)。但是,在您的模型中,LSTM层的输入(实际上是它之前密集层的输出)是一个2D数组(即
发现ndim=2
)。要使其成为形状
(n_个样本、n_个时间步、n_个功能)
,一种解决方案是使用
RepeatVector
层重复它,重复次数与时间步数相同(需要在代码中指定):


LSTM层的输入应该是一个表示序列或时间序列的3D数组(这就是错误试图说的:
expected ndim=3
)。但是,在您的模型中,LSTM层的输入(实际上是它之前密集层的输出)是一个2D数组(即
发现ndim=2
)。要使其成为形状
(n_个样本、n_个时间步、n_个功能)
,一种解决方案是使用
RepeatVector
层重复它,重复次数与时间步数相同(需要在代码中指定):


检查这个:为了给你一个真正好的答案,我们需要从你的数据中理解“你想成为什么序列”。你在处理图像吗?你想要一个序列像一部有很多图像的电影吗?还是要将列作为序列,或将行。。。。或者可能不是图像,数据意味着其他东西?检查这个:为了给你一个真正好的答案,我们需要从你的数据中理解“你想成为什么序列”。你在处理图像吗?你想要一个序列像一部有很多图像的电影吗?还是要将列作为序列,或将行。。。。或者可能不是图像,数据意味着其他什么?@arian如果答案解决了您的问题,请单击答案旁边的复选标记将其标记为“已回答”来接受它-参见@arian如果答案解决了您的问题,请单击答案旁边的复选标记将其标记为“已回答”来接受它-参见
model.add(Dense(32, activation='relu'))
model.add(RepeatVector(n_timesteps))
model.add(LSTM(128, return_sequences=True, input_shape=(n_timesteps,32), activation='relu'))