对于LSTM分类模型,predict_classes返回冲突的形状

时间:2019-12-09 07:40:01

标签: python tensorflow keras classification lstm

我很难理解LSTM问题的输入/输出的预期形状。

在此示例中,我有 386 个长度为 100 的内容,每个都包含 14 个功能。对于每个这样的序列,我只需要预测它是否在 0 1 类中。各自的形状和模型是

X_test.shape,y_test.shape
((358, 100, 14), (358, 1))
model = Sequential()
model.add(LSTM(64,return_sequences=True,input_shape=(None,14)))
model.add(Dense(1, activation='sigmoid')) 
model.compile(loss='binary_crossentropy' , metrics=['accuracy'])

现在(如果要拟合后)我要预测模型的输出,则预测的形状与y_test不一致!

y_pred = model.predict_classes(X_test)
y_pred.shape
(358, 100, 1)

在这里,我希望形状与y_test匹配,并且为(358,1),而不是predict_classes()给出的输出

我在这里显然是误会了。我在这里想念什么?是否有其他方法可以完全解决这个问题?

1 个答案:

答案 0 :(得分:0)

您将返回LSTM return_sequences=True的第3个暗度,最后一个S型层的输入将是3D。因此,乙状结肠层将应用在最后一个昏暗处。

只需执行以下操作:

model.add(LSTM(64,return_sequences=False,input_shape=(None,14)))