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

Posted

技术标签:

【中文标题】predict_classes 返回 LSTM 分类模型的冲突形状【英文标题】:predict_classes returning a conflicting shape for a LSTM classification model 【发布时间】:2020-04-02 07:03:06 【问题描述】:

我很难理解 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】:

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

只需执行以下操作:

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

【讨论】:

以上是关于predict_classes 返回 LSTM 分类模型的冲突形状的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:“顺序”对象没有属性“predict_classes”

AttributeError:“功能”对象没有属性“predict_classes”

张量流:classifier.predict 和 predict_classes

即使使用顺序模型,我也会收到“AttributeError:'Model' object has no attribute 'predict_classes'”

具有可变长度序列的 RNN/LSTM 库,无需分桶或填充

用于时间序列异常检测的 Keras LSTM-VAE(变分自动编码器)