Как доза настройки steps_per_epoch и epochs влияет на результат обучения в Keras?

Мой генератор всегда случайным образом выдает два изображения из моего набора данных, а затем я вычисляю потери, используя эти два образца. Скажем, я установил steps_per_epoch=40 и epochs=5, какая разница, если я установлю steps_per_epoch=5 и epochs=40 (я использую Адам в качестве оптимизатора)?


person Teresa Ho    schedule 27.07.2018    source источник


Ответы (1)


Аргумент epochs (также называемый итерацией) относится к количеству полных проходов по всем обучающим данным. Аргумент steps_per_epoch относится к количеству пакетов, сгенерированных за одну эпоху. Следовательно, у нас есть steps_per_epoch = n_samples / batch_size.

Например, если у нас есть 1000 обучающих выборок и мы установили размер пакета равным 10, то у нас будет steps_per_epoch = 1000 / 10 = 100. epochs может быть установлен независимо от значения размера пакета или steps_per_epoch.

Не существует определенного значения размера пакета, подходящего для всех сценариев. Обычно очень большой размер пакета замедляет процесс обучения (т. Е. Требуется больше времени для схождения модели к решению), а очень маленький размер пакета может быть не лучшим использованием доступных ресурсов (например, GPU и CPU). . Обычные значения включают 32, 64, 128, 256, 512 (степень двойки помогает ускорить выделение памяти графического процессора). Кроме того, вот ответ на SO, который касается этого вопроса, который включает цитаты из соответствующих книг и статей. Или взгляните на этот вопрос и ответы на него на Cross Validated, чтобы получить более полное определение размера пакета.

person today    schedule 27.07.2018
comment
Но как это влияет на результат? Для 1000 обучающих выборок, если я установлю batch_size равным 100, а затем step_per_epoch будет 10. Будет ли это по-разному влиять на обучение? - person Teresa Ho; 27.07.2018
comment
@TeresaHo Я обновил свой пост. Пожалуйста, взгляните на это. - person today; 27.07.2018