如何解决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
因此,如果您现在想知道一个 epoch 需要多少次迭代(所有图像都看过一次),那么这个数字就是
iterations_for_one_epoch = TOTAL_NUM_IMAGES / single_iteration
所以如果你想训练 20 个 epochs,你可以设置 MAX_ITER 如下:
cfg.SOLVER.MAX_ITER = iterations_for_one_epoch * 20
来源:
Detectron2 Docs(一次迭代是一次 run_step 调用,从加载器中提取一个“数据点” data = next(self._data_loader_iter))
MaskRCNN-benchmark Github issue 以类似的方式解释
,根据this源代码,在Detectron2术语中的迭代等于epoch
。
您应该通过选择最佳损耗率/火车时间比率,通过实验找到最佳MAX_ITER
值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。