【问题标题】:Is training accuracy of a model calculated on the mini-batch?模型的训练精度是在小批量上计算的吗?
【发布时间】:2019-01-16 07:14:14
【问题描述】:

我试图在每个 epoch 结束时记录模型的训练准确度,但我不确定训练准确度是根据整个训练数据还是用于训练的最后一个 mini-batch 计算的。例如,如果我有 10000 个训练数据并且我正在使用 100 个小批量进行训练,我是使用最后一个 100 个小批量(该时期的第 100 个和最后一个小批量)来计算训练准确度还是使用整个 10000 个训练数据?

【问题讨论】:

    标签: python tensorflow machine-learning


    【解决方案1】:

    理想情况下,训练准确度应该包括每个样本,但实际上,可以使用数据的子集,只要它代表所有数据。随机批次的 100 个样本是否代表您的数据,取决于手头的问题。例如,如果您将样本分类为一千个可能的类别之一,这显然是不够的。

    我通常在训练期间保持给定时期损失的运行平均值。由于训练损失几乎总是单调递减,这往往会高估损失(并低估准确性。但是,随着模型的收敛,差异应该会消失。

    【讨论】:

    • 你认为保留每个 epoch 中所有批次的所有损失和准确率的列表,然后计算每个 epoch 的平均准确率和总损失是否可行?
    【解决方案2】:

    我同意@Cory 的观点,理想情况下,应该对每个训练样本计算训练准确度。我没有使用运行平均值(也许是指数),而是保留最后的总和,比如说 50 个小批量。然后我报告这些小批量的平均损失。您可以轻松跟踪模型的近期表现(您可以比每个 epoch 更频繁地报告这个数字)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-05
      • 2021-05-22
      • 2021-05-14
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      相关资源
      最近更新 更多