Подтвердить что ты не робот

Caffe | стратегия определения значений solver.prototxt

В Caffe я пытаюсь реализовать сеть полного свертки для семантической сегментации. Мне было интересно, существует ли определенная стратегия для настройки ваших значений 'solver.prototxt' для следующих гиперпараметров:

  • test_iter
  • test_interval
  • iter_size
  • max_iter

Зависит ли это от количества изображений, которые у вас есть для вашего учебного набора? Если да, то как?

4b9b3361

Ответ 1

Чтобы установить эти значения значимым образом, вам нужно иметь несколько бит информации о ваших данных:

1. Размер учебного набора Общее количество обучающих примеров, которые у вас есть, можно назвать этой цифрой T.
2. Тренировочный размер партии количество примеров обучения, обработанных вместе в одной партии, обычно устанавливается уровнем входных данных в 'train_val.prototxt'. Например, в этот файл размер партии поезда установлен в 256. Пусть обозначить эту величину на tb.
3. Размер установленного значения проверки общее количество примеров, которые вы выделили для проверки вашей модели, обозначим это символом V.
4. Значение размера пакета проверки, установленное в batch_size для фазы TEST. В в этом примере установлено значение 50. Позвольте называть это vb.

Теперь, во время обучения, вы хотели бы получать непредвзятую оценку производительности своей сети каждый раз в то время. Для этого вы запускаете свою сеть на основе проверки, установленной для итераций test_iter. Чтобы охватить весь набор валидаций, вам необходимо иметь test_iter = V/vb.
Как часто вы хотели бы получить эту оценку? Это действительно зависит от вас. Если у вас очень большой набор валидаций и медленная сеть, проверка слишком часто сделает процесс обучения слишком длинным. С другой стороны, недостаточно проверять достаточно часто, чтобы вы не заметили, когда и когда ваш процесс обучения не сходится. test_interval определяет, как часто вы проверяете: обычно для больших сетей вы устанавливаете test_interval в порядке 5K, для небольших и более быстрых сетей вы можете выбрать более низкие значения. Опять же, все зависит от вас.

Чтобы охватить весь набор тренировок (завершение "эпохи" ), вам нужно запустить итерации T/tb. Обычно один тренд для нескольких эпох, таким образом max_iter=#epochs*T/tb.

Относительно iter_size: это позволяет усреднять градиенты над несколькими обучающими мини-партиями, см. эту тему за дополнительной информацией.