为什么max_batches与数据集的大小无关



我想知道为什么图像的数量对训练时的迭代次数没有影响。下面是一个例子,让我的问题更清楚:假设我们有6400张图像用于识别4个类的训练。根据AlexeyAB的解释,我们保持批次=64,细分=16,并写入最大批次=8000,因为最大批次由#classes x 2000决定。

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

换言之,我想简单解释一下为什么划时代的数量似乎与训练质量无关。我觉得这是Yolo建造的结果,但我的知识还不够渊博,无法理解如何建造。

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

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

在每个历元中,所有数据样本都通过网络,因此如果您有许多图像,则一个历元(和迭代(的训练时间会更高,您可以通过增加数据中的图像来测试这一点。

细分说明了小批量的数量。假设您的数据集中有100个图像。您的批量大小为10,细分为2,最大批量为20。

因此,在每次迭代中,10个图像分两个小批量(每个小批量有5个样本(传递到网络,一旦你完成了20个学士学位(20*10个数据样本(,训练就会完成。(细节可能有点不同,我使用的是原作者pjreddie稍微修改过的暗网(

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

相关内容

  • 没有找到相关文章

最新更新