predict_classes返回 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()给出的输出

我显然误解了这里的东西。我在这里错过了什么?有没有其他方法可以完全解决这个问题?

您返回 LSTMreturn_sequences=True的第 3 个暗淡,其中最后一个 sigmoid 层的输入将是 3D。因此,S形层将应用于最后一个暗淡。

只需执行以下操作:

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

最新更新