Объединение Keps model.fit `steps_per_epoch` с API-интерфейсом набора данных TensorFlow` batch () ` - PullRequest
0 голосов
/ 07 февраля 2019

Я смотрю на производительность и использование графического процессора во время обучения модели CNN с Keras + TensorFlow.Подобно этому вопросу , мне трудно понять комбинированное использование Keras model.fit steps_per_epoch и API набора данных TensorFlow .batch(): я установил определенный размер пакета на входеконвейер dataset = dataset.batch(batch_size) и позже я использую

fit = model.fit(dataset, epochs=num_epochs, steps_per_epoch=training_set_size//batch_size)

, но я вижу, что на самом деле можно установить любое количество шагов за эпоху, даже больше, чем training_set_size//batch_size.Из документации я понимаю, что на Керасе эпоха не обязательно является пропуском всего тренировочного набора, как обычно, но в любом случае я немного сбит с толку, и теперь я не совсем уверен, правильно ли я его использую.

Определяет ли dataset.batch(batch_size) + steps_per_epoch=training_set_size//batch_size мини-пакет SGD, который проходит по всему обучающему набору с помощью мини-пакетов batch_size образцов?Эпохи больше, чем один проход по тренировочному набору, если для steps_per_epoch установлено значение, превышающее training_set_size//batch_size?

1 Ответ

0 голосов
/ 07 февраля 2019

steps_per_epoch - это количество пакетов с заданным размером пакета, прошедших через сеть за одну эпоху.

Вы установили steps_per_epoch на training_set_size//batch_size по уважительной причине.Это гарантирует, что все данные обрабатываются за одну эпоху, при условии, что число делится точно (если оно не округляется оператором //).

То есть, если у вас был размер партии 10 и обучающий наборразмер 30, тогда steps_per_epoch = 3 гарантирует, что все данные используются.

И процитирую ваш вопрос:

«Эпохи больше, чем один проход по обучающему набору, если для steps_per_epoch больше, чем training_set_size // batch_size?»

Да.Некоторые данные снова будут переданы в ту же эпоху.

...