【问题标题】:LSTM accuracy too lowLSTM 准确率太低
【发布时间】:2019-08-05 06:48:41
【问题描述】:

我是一个新手,我只是尝试使用以下代码获得准确性并验证准确性

model = Sequential()
model.add(LSTM(10, input_shape=(train_X.shape[1], train_X.shape[2])))
#model.add(Dropout(0.2))
#model.add(LSTM(30, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dense(1), return_sequences=True)
model.compile(loss=’mae’, optimizer=’adam’, metrics=[‘accuracy’])
# fit network
history = model.fit(train_X, train_y, epochs=50, batch_size=120, validation_data=(test_X, test_y), verbose=2, shuffle=False)
# plot history
pyplot.plot(history.history[‘loss’], label=’train’)
pyplot.plot(history.history[‘val_loss’], label=’test’)
pyplot.legend()
pyplot.show()
print(history.history[‘acc’])

由于损失值非常低(约为 0.0136),尽管我得到的准确度为 6.9%,验证准确度分别为 2.3%,非常低

【问题讨论】:

    标签: python machine-learning keras neural-network lstm


    【解决方案1】:

    这是因为准确度只对分类问题有意义;对于回归(即数字预测),例如您的,准确性毫无意义

    更重要的是,不幸的是,Keras 不会“保护”您或任何其他用户免于在您的代码中放置这些无意义的请求,也就是说,您不会收到任何错误,甚至是警告,表明您正在尝试一些没有意义,例如在回归设置中要求准确性;有关更多详细信息和实际演示,请参阅我在What function defines accuracy in Keras when the loss is mean squared error (MSE)? 中的回答(在 MAE 而不是 MSE 的情况下,论点是相同的,因为两个损失函数都表示回归问题)。

    在回归设置中,性能指标通常与损失(此处为 MAE)相同,因此您应该从模型编译中删除 metrics=[‘accuracy’] 参数并只担心您的损失(正如您所说,这是确实很低)。

    【讨论】:

      猜你喜欢
      • 2019-10-06
      • 1970-01-01
      • 2020-06-29
      • 2019-08-21
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2021-10-13
      • 2014-02-28
      相关资源
      最近更新 更多