【问题标题】:Why is the validation loss and accuracy oscillating that strong? [closed]为什么验证损失和准确率波动如此之大? [关闭]
【发布时间】:2020-12-09 08:22:11
【问题描述】:

我目前正在训练一个 CNN 来检测一个人是否戴口罩。不幸的是,我不明白为什么我的验证损失如此之高。正如我所注意到的,我正在验证的数据是在类之后排序的(这是网络的输出)。这对我的验证准确性和损失有什么影响吗? 我使用计算机视觉测试了模型,效果很好,但验证损失和准确性看起来仍然非常错误。 原因是什么?

【问题讨论】:

  • 数值不稳定。

标签: tensorflow validation machine-learning conv-neural-network


【解决方案1】:

从直觉上看,这种现象的发生可能是由于以下几个因素:

  1. 您可能会使用非常大的批量大小 (>=128),这可能会导致这些波动,因为如果批量大小太高,则会对收敛产生负面影响。有几篇论文研究了这种现象。您可能会也可能不会。
  2. 您的验证集可能太小了。当验证集太小(数量上,不一定是训练-验证之间的百分比分配)时,我会遇到这种波动。在这种情况下,一个 epoch 之后权重的变化会对验证损失产生更明显的影响(并在很大程度上自动影响验证准确性)。

在我看来,根据我的经验,如果您考虑/检查您的模型在现实生活中运行良好,您可以决定只训练 50 个 epoch,因为您可以从图表中看出这是一个最佳切割-off 点,因为在该点之后波动加剧,并且可能会观察到小的过度拟合现象。

【讨论】:

  • 感谢您的快速回答,我正在以 32 的批大小进行训练,而验证数据实际上只有 700 个示例。我试图在 50 个 Epochs 时切断,但返回的模型不如 220 个 Epochs 训练准确。第二种解释似乎与我的模型非常相关。如果我能够以好的方式更改模型,我会在这里报告。
  • 我很高兴看到我的第二个猜测完全适合您的任务:D。同时,确保您使用 ModelCheckpoint() 回调始终将最佳模型保存到验证损失或验证准确度。
猜你喜欢
  • 2017-03-23
  • 2020-04-27
  • 2021-03-01
  • 2022-01-15
  • 2019-03-22
  • 2019-09-06
  • 2018-06-10
  • 2022-01-19
  • 2020-03-28
相关资源
最近更新 更多