Как установить batch_size, steps_per epoch и шаги валидации

26

Я начинаю изучать CNN, используя Keras. Я использую theano бэкэнд.

Я не понимаю, как установить значения:

  • размер партии,
  • шагов за эпоху,
  • validation_steps.

Каким должно быть значение batch_size, количество шагов на эпоху и количество этапов проверки, если у меня 240 000 образцов в обучающем наборе и 80 000 в наборе испытаний?

Ermene
источник
Какие у вас аппаратные характеристики? Это зависит от того, как правило, люди используют размер партии 32/64, для периодов от 10 до 15, а затем вы можете рассчитать количество шагов на одну эпоху из приведенного выше.
Aditya

Ответы:

28
  • batch_size определяет количество образцов в каждой мини-партии. Его максимум - это число всех выборок, что делает градиентный спуск точным, потери будут уменьшаться до минимума, если скорость обучения достаточно мала, но итерации медленнее. Его минимум равен 1, что приводит к стохастическому спуску градиента: быстро, но направление шага градиента основано только на одном примере, потеря может прыгать вокруг. batch_size позволяет настроить между двумя крайностями: точное направление градиента и быстрая итерация. Кроме того, максимальное значение для batch_size может быть ограничено, если ваша модель + набор данных не помещается в доступную (GPU) память.
  • steps_per_epoch количество пакетных итераций до того, как обучающая эпоха считается завершенной. Если у вас есть тренировочный набор фиксированного размера, вы можете его игнорировать, но это может быть полезно, если у вас огромный набор данных или вы генерируете случайные дополнения данных на лету, т.е. если ваш тренировочный набор имеет (сгенерированный) бесконечный размер. Если у вас есть время, чтобы просмотреть весь набор тренировочных данных, я рекомендую пропустить этот параметр.
  • validation_steps аналогичен steps_per_epoch, но вместо этого для данных проверки установлен набор обучающих данных. Если у вас есть время, чтобы просмотреть весь набор данных проверки, я рекомендую пропустить этот параметр.
Silpion
источник
Что вы подразумеваете под "пропуском этого параметра"? Когда я удаляю параметр, я получаю When using data tensors as input to a model, you should specify the steps_per_epoch argument.
Николас Рауль
Согласно документации, параметр steps_per_epoch метода fit имеет значение по умолчанию и, следовательно, должно быть необязательным: «None по умолчанию равно числу выборок в вашем наборе данных, деленному на размер пакета, или 1, если это невозможно определить». Источник: keras.io/models/model
Silpion
1

в Github есть ответ

  1. model.fit_generator требует, чтобы генератор входных данных работал бесконечно.
  2. steps_per_epochиспользуется для создания всего набора данных один раз путем вызова генератора steps_per_epochраз
  3. в то время как epochsукажите, сколько раз модель обучалась по всему набору данных.
Хонг Ченг
источник