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