7

我是使用detectron2的新手,只是学习它。这可能是一个菜鸟问题,但我真的需要答案。我没有发现与存储库中的时代数有关的任何信息。

我们知道,epoch 意味着所有数据一次通过模型,batch 意味着整个数据集的某个子集,它具有通过梯度下降影响损失的能力。在这个模型中,(Detectron2)我们有一个叫做迭代的东西。这个迭代是什么意思?这是否意味着一批通过模式或一个时期(考虑到每次迭代的时间不应该是这种情况)

我的问题是,我怎么知道将所有图像传递给模型的最小迭代次数,至少一次。

4

3 回答 3

9

在detectron2中,epochMAX_ITER * BATCH_SIZE / TOTAL_NUM_IMAGES

于 2020-08-27T03:30:36.607 回答
6

我认为当前接受的答案不正确

single_iteration = cfg.SOLVER.NUM_GPUS * cfg.SOLVER.IMS_PER_BATCH

因此,如果您现在想知道一个时期需要多少次迭代(所有图像都看过一次),那么这个数字就是

iterations_for_one_epoch = TOTAL_NUM_IMAGES / single_iteration

所以如果你想训练 20 个 epoch,你可以设置 MAX_ITER 如下:

cfg.SOLVER.MAX_ITER = iterations_for_one_epoch * 20

资料来源:

Detectron2 Docs(一次迭代是一次run_step-call,从加载器数据中提取一个“数据点” = next(self._data_loader_iter))

MaskRCNN-benchmark Github issue用类似的方式解释

于 2021-04-25T07:57:58.197 回答
-3

根据源代码,Detectron2 术语中的迭代等于epoch.
您应该MAX_ITER通过选择最佳损失率/训练时间比率来通过实验找到最佳值。

于 2020-08-25T12:44:52.557 回答