Между этими двумя значениями нет существенной разницы, потому что
Model.fit()
выполняет метод _fit_loop
для количества эпох (исходный код keras/engine/training.py
), так что это похоже на разницу между ...
for i in range(64):
j += 1
... и ...
for i in range(64):
for k in range(1):
j += 1
Но, тем не менее, они не в точности эквивалентны из-за того, что делает Керас помимо самой тренировки:
- История обучения теряется при втором подходе (
model.history
). Вы должны поддерживать его вручную, если хотите проверить кривую обучения (часто это происходит).
- Оба
X
и y
стандартизированы перед циклом (см. Метод Model._standardize_user_data
). В некоторых случаях издержки стандартизации могут быть сопоставимы с обучением одной эпохи, и в этом случае вы можете замедлить процесс.
- Второй подход, однако, позволяет изменять параметры для каждой эпохи, такие как размер партии или перемешивание. Не уверен, что это большое дело.
Кстати, если вы просто хотите напечатать что-то до или после каждой эпохи, используйте keras callbacks , например. on_train_end()
метод обратного вызова.