我是使用detectron2的新手,只是学习它。这可能是一个菜鸟问题,但我真的需要答案。我没有发现与存储库中的时代数有关的任何信息。
我们知道,epoch 意味着所有数据一次通过模型,batch 意味着整个数据集的某个子集,它具有通过梯度下降影响损失的能力。在这个模型中,(Detectron2)我们有一个叫做迭代的东西。这个迭代是什么意思?这是否意味着一批通过模式或一个时期(考虑到每次迭代的时间不应该是这种情况)
我的问题是,我怎么知道将所有图像传递给模型的最小迭代次数,至少一次。
我是使用detectron2的新手,只是学习它。这可能是一个菜鸟问题,但我真的需要答案。我没有发现与存储库中的时代数有关的任何信息。
我们知道,epoch 意味着所有数据一次通过模型,batch 意味着整个数据集的某个子集,它具有通过梯度下降影响损失的能力。在这个模型中,(Detectron2)我们有一个叫做迭代的东西。这个迭代是什么意思?这是否意味着一批通过模式或一个时期(考虑到每次迭代的时间不应该是这种情况)
我的问题是,我怎么知道将所有图像传递给模型的最小迭代次数,至少一次。
在detectron2中,epoch
是 MAX_ITER * BATCH_SIZE / TOTAL_NUM_IMAGES
我认为当前接受的答案不正确
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用类似的方式解释
根据此源代码,Detectron2 术语中的迭代等于epoch
.
您应该MAX_ITER
通过选择最佳损失率/训练时间比率来通过实验找到最佳值。