keras中CNN-LSTM模型的序列间分类

keras中CNN-LSTM模型的序列间分类,keras,classification,lstm,cnn,Keras,Classification,Lstm,Cnn,我正在处理1000个样品。每个样本都与一个人相关,此人在168个不同的时间点上有70种不同的生命体征和健康特征。然后,对于每个时间步,我应该预测一个二进制标签。因此,输入和输出形状为: Input.shape = (1000, 168, 70) Output.shape = (1000, 168, 1) 我们的目标是使用CNN提取特征,然后将LSTM应用于时间信息。然后我想为二元分类应用一个稠密层。我想将CNN-LSTM模型应用于此任务 下面是我尝试的代码 model = Sequentia

我正在处理1000个样品。每个样本都与一个人相关,此人在168个不同的时间点上有70种不同的生命体征和健康特征。然后,对于每个时间步,我应该预测一个二进制标签。因此,输入和输出形状为:

Input.shape = (1000, 168, 70)
Output.shape = (1000, 168, 1) 
我们的目标是使用CNN提取特征,然后将LSTM应用于时间信息。然后我想为二元分类应用一个稠密层。我想将CNN-LSTM模型应用于此任务

下面是我尝试的代码

model = Sequential()                        
model.add(Conv1D(filters=16, kernel_size=5, strides=1, padding="same", input_shape=(168, 70), activation='relu'))
model.add(MaxPooling1D())
model.add(LSTM(64, return_sequences=True))
model.add(Dense(1, activation="sigmoid")) 

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train_3D, Y_train_3D, batch_size=32, epochs=500, validation_data=(X_val_3D, Y_val_3D))
我对这个模型的应用还不熟悉,所以我确信我在这里做了一些我找不到的错误。以下是错误:

ValueError: logits and labels must have the same shape ((None, 84, 1) vs (None, 168, 1))

非常感谢您的帮助。

因为您使用的是
返回序列=True
,这意味着
LSTM
将返回带有形状
(批次大小,84,64)
的输出。此处出现的
84
是由于您使用了
Conv1D
参数。因此,当您使用
1
单位应用
density
层时,它会将最后一个维度减少到
1
,这意味着
(batch\u size,84,64)
将在
density
层应用后变为
(batch\u size,84,1)
。您不应使用
return\u sequences=True
或在将输出馈送到
density
层之前使用另一层/层将其展平到二维