Последовательность Keras, fit_generator и steps_per_epoch - PullRequest
3 голосов
/ 12 июня 2019

Я заметил, что с fit_generator параметру steps_per_epoch обычно присваивается total_samples//batch_size, где можно создать генератор / использовать ImageDataGenerator и передать его в качестве аргумента fit_generator.

Однако я использую класс Sequence (keras.utils.Sequence()) для создания моего генератора и передаю steps_per_epoch целое число, меньшее total_samples//batch_size.

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

Например, в моем тренировочном наборе 3200 сэмплов, и я использую размер партии 32. Поэтому в идеале для одной завершенной эпохи я должен установить steps_per_epoch на 100. Однако, что произойдет, если я установлю для steps_per_epoch 50? Как только первая эпоха будет завершена, будет ли сгенерирована точка данных 1601 (32 * 50) или она начнется с начала (точка 1 с данными)?

1 Ответ

2 голосов
/ 12 июня 2019

При использовании Sequence вам не нужно передавать steps_per_epoch, так как эта информация может быть получена из метода __len__ вашего Sequence.

Если вы передадите steps_per_epoch при использовании Sequence, это переопределит любое использование метода __len__ и будет эффективно использовать только steps_per_epoch выборок из вашей последовательности (от 0 до steps_per_epoch - 1), и это вернется к нулю в конце эпохи. Вы можете проверить это поведение в исходном коде keras .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...