【问题标题】:Linear Loss and Accuracy CNN graph线性损失和准确度 CNN 图
【发布时间】:2021-02-19 05:30:11
【问题描述】:

我最近在各种批量大小下运行我的 CNN,并注意到批量大小(32、64)越小,准确度越高,但图表看起来像这样:

谁能解释为什么这些图表看起来不正常?我的训练数据有 4096 个特征。这是我的较大批量大小(512、1024)的图表:

【问题讨论】:

  • 根据我的经验,较小的 batch_size 通常比较大的 batch_size 表现更好。
  • 您能解释一下为什么您所说的“图表看起来不正常”吗?
  • 我查了一下,根据这个页面stackoverflow.com/questions/46654424/…批量越大越好。
  • 对于我训练的所有 CNN,他们所有的损失和准确率图都具有大批量的图形形状。我从未见过较小批量的图形形状,所以我有点怀疑。

标签: python tensorflow keras conv-neural-network


【解决方案1】:

理想情况下(根据经典梯度下降法),您应该使用一批(整个数据集)。但它太慢了,您的数据集可能不适合内存。所以我们使用梯度近似(随机梯度下降法)——通过分批分割数据集(见这里 - https://en.wikipedia.org/wiki/Stochastic_gradient_descent)。

所以批次越大 - 近似值越好。

要查看差异,您必须通过步数(而不是 epoch)进行比较:batch size 越大 - 每个 epoch 的步数越少。现在你在 55 个大批量的 epoch 和 50 个小批量的 epoch 中获得了 19% 的准确率。这是相似的。但在第一种情况下,您已经完成了 16 次以上的步骤,这花费了更多时间(最多 16 次)。

另一个重要的一点 - 您可以对大批量使用更高的学习率,这可以进一步缩短训练时间。在您的情况下 - 您可以将学习率提高 4 倍。

【讨论】:

  • 那么,如果我的默认学习率是 0.01,我应该把它改成 0.04 吗?
  • @AllenYe 是的,试试看
  • 刚刚运行了我的模型,学习率越高,准确率越高,但精度越低。它的运行速度也略快。
猜你喜欢
  • 1970-01-01
  • 2018-09-16
  • 2021-11-03
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
相关资源
最近更新 更多