损失值下降而准确性保持不变?

数据挖掘 喀拉斯 回归 lstm 准确性
2022-02-26 17:15:24

当我在训练时,我的损失似乎在下降,但我的准确性在整个训练过程中保持不变。无论我如何调整网络、输入数据长度等,它似乎总是接近 0.0023。

我的输入数据是当前样本级别之前的一系列样本级别。所以基本上根据之前的样本水平来预测当前的样本水平。

网络是顺序的:

Dense(seq_length)
LSTM(seq_length*10)
Dense(1)

验证集是总输入样本的 0.33。

在 Windows 上使用 TensorFlow Keras。

损失、准确度、val损失等的CSV: https ://pastebin.com/GPsmeUmg

2个回答

一切都很好,损失正在下降,你的模型正在学习。问题是您在回归问题上使用准确性。

准确度应该只用于分类。刚开始时,这是一个非常常见的错误。如果您想要另一个指标,那么您可以使用mean_absolute_error它,顾名思义,它告诉您模型平均误差有多大。

准确性不起作用的原因是因为它仅适用于您拥有的完全匹配y_true == y_pred在回归中,您使用的是连续值,这使得这种情况非常罕见,并且与模型的性能没有太大关系。

您获得任何准确性的原因很可能是因为 Keras 做到y_true == round(y_pred)了,四舍五入了模型预测。否则精度几乎总是为零,因为模型永远不会得到相同的小数。这个问题由 Esmailian 提供了一个很好的答案,对此进行了更详细的介绍。

我假设您正在尝试使用 LSTM 进行分类任务,并且您的验证准确度没有增加。

  1. 您的模型仅学习您的训练数据并根据它调整模型权重。这在机器学习中称为过拟合。
  2. 所以问题是为什么会发生过度拟合,原因之一是模型暴露的数据量有限。

我认为这是您建模不学习的原因,即数据量有限。