Сколько изображений на итерацию в Detectron2
Я новичок в использовании detectron2, просто изучаю его. Это может быть вопрос новичка, но мне действительно нужен ответ. Я не нахожу в репозитории ничего, связанного с количеством эпох.
Мы знаем, что эпоха означает однократное прохождение всех данных через модель, а пакет означает определенное подмножество всего набора данных, которое может влиять на потери посредством градиентного спуска. В этой модели (Detectron2) у нас есть нечто, называемое итерацией. Что означает эта итерация? Означает ли это прохождение одной партии через режим или эпоху (этого не должно быть, учитывая время на итерацию)
Мой вопрос: как мне узнать минимальное количество итераций, которые передадут все мои изображения в модель хотя бы один раз.
3 ответа
В 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 эпох, вы должны установить MAX_ITER следующим образом:
cfg.SOLVER.MAX_ITER = iterations_for_one_epoch * 20
Источники:
Документы Detectron2 (одна итерация - это один вызов run_step, который извлекает одну точку данных из загрузчика data = next(self._data_loader_iter))
Проблема Github в тесте MaskRCNN объясняет это аналогичным образом
Согласно этому исходному коду, итерация в терминологии Detectron2 равнаepoch
.
Вы должны найти оптимальныеMAX_ITER
значение экспериментально путем выбора оптимального отношения коэффициента потерь / времени поезда.