【问题标题】:Why max_batches independent of the size of the dataset?为什么 max_batches 与数据集的大小无关?
【发布时间】:2020-05-07 15:03:55
【问题描述】:

我想知道为什么训练时图像的数量对迭代次数没有影响。这是一个使我的问题更清楚的示例: 假设我们有 6400 张图像用于训练以识别 4 个类别。根据 AlexeyAB 的解释,我们保持 batch= 64,subdivisions = 16 并写 max_batches = 8000,因为 max_batches 由 #classes x 2000 决定。

由于我们有 6400 张图像,一个完整的 epoch 需要 100 次迭代。因此,此训练在 80 个 epoch 后结束。 现在,假设我们有 12800 张图像。在这种情况下,一个 epoch 需要 200 次迭代。因此训练在 40 个 epoch 后结束。 由于一个时期是指整个训练数据集的一个周期,我想知道为什么我们在数据集增加时不增加迭代次数,以保持时期数不变。

换一种说法,我想简单解释一下为什么 epoch 的数量似乎与训练的质量无关。我觉得这是 Yolo 构造的结果,但我知识不够,无法理解。

【问题讨论】:

    标签: machine-learning yolo darknet


    【解决方案1】:

    为什么训练时图像的数量对迭代次数没有影响?

    • 在darknet yolo中,迭代次数取决于.cfg文件中的max_batches参数。运行max_batches后,暗网保存final_weights

    在每个 epoch 中,所有数据样本都通过网络传递,因此如果您有很多图像,则一个 epoch(和迭代)的训练时间会更长,您可以通过增加数据中的图像来进行测试。

    细分占小批量的数量。假设您的数据集中有 100 张图像。您的批量大小为 10,细分为 2,max_batches 为 20。

    因此,在每次迭代中,10 张图像分两个 mini-batch(每个有 5 个样本)传递给网络,一旦您完成了 20 个 baches(20*10 数据样本),训练将完成。 (细节可能有点不同,我用的是原作者pjreddie稍微修改过的暗网)

    【讨论】:

      【解决方案2】:

      说明现已更新。 max_batches 等于 classes*2000 但不小于训练图像数量且不小于 6000。请在此link 找到它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-26
        • 2020-05-28
        • 2021-10-31
        相关资源
        最近更新 更多