Кафе | стратегия установки значений solver.prototxt

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

  • test_iter
  • test_interval
  • iter_size
  • max_iter

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

1 ответ

Решение

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

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

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

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

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

Другие вопросы по тегам