Источник: Nuances of Programming
Что такое обратный вызов Keras?
Обратный вызов — множество функций, применяемых на данной стадии тренировки. Вы можете использовать их, чтобы посмотреть на внутреннее состояние и статистику модели во время обучения.
Вы определяете и используете обратные вызовы, когда хотите автоматизировать какие-то задачи после тренировки/эпохи, что помогает контролировать обучение. Это включает остановку тренировки, когда достигнута определённая точность или потери, сохранение модели после эпохи, настройку коэффициента скорости обучения и многое другое. Приступим!
EarlyStopping
Переобучение — кошмар ML. Один из способов избежать его — остановить тренировку раньше. EarlyStopping имеет различные параметры/метрики, которые вы можете изменять, чтобы установить, когда обучение должно завершиться. Вот несколько дельных метрик:
- monitor: отслеживаемые значения, например, val_loss.
- min_delta: минимальное изменение отслеживаемого значения. Например, min_delta=1 означает, что тренировка остановится, когда абсолютное изменение значения будет меньше единицы.
- patience: количество тренировок без улучшений, после которого обучение остановится.
- restore_best_weights: установите в True, если хотите сохранить лучшие веса нейронов, как только обучение остановится.
Код ниже определяет EarlyStopping, который отслеживает val_loss и останавливает тренировку, если не было изменений после трёх эпох, сохраняя лучшие веса.
from keras.callbacks import EarlyStoppingearlystop = EarlyStopping(monitor = 'val_loss',
min_delta = 0,
patience = 3,
verbose = 1,
restore_best_weights = True)
ModelCheckpoint
Сохраняет модель после каждой тренировки. Важные метрики:
- filepath: путь к файлу модели.
- monitor: отслеживаемое значение.
- save_best_only: установите в True, если хотите перезаписать последнюю лучшую модель.
- mode: auto, min или max. Например, mode=’min’, если хотите минимизировать отслеживаемое значение. Пример:
from keras.callbacks import ModelCheckpointcheckpoint = ModelCheckpoint(filepath,
monitor='val_loss',
mode='min',
save_best_only=True,
verbose=1)
LearningRateScheduler
from keras.callbacks import LearningRateSchedulerscheduler = LearningRateScheduler(schedule, verbose=0) # schedule - функция.
Он регулирует скорость обучения с течением времени, используя schedule, которую вы уже написали. Эта функция возвращает желаемую скорость обучения. Входной параметр — индекс эпохи.
Другие обратные вызовы
- History и BaseLogger применяются автоматически.
- TensorBoard: мой любимый обратный вызов. Он пишет лог для TensorBoard, визуализатора TensorFlow. Если вы установили TensorFlow через pip, то можете запустить TensorBoard из командной строки: tensorboard — logdir=/full_path_to_your_logs
- CSVLogger: записывает результаты эпохи в файл csv.
- LambdaCallback: для собственных обратных вызовов.
Итоги
В этой статье мы изучили основную концепцию обратных вызовов в Keras. Исчерпывающее описание приведено в документации: http://keras.io/callbacks.
Читайте также:
Читайте нас в телеграмме и vk
Перевод статьи Andre Duong: Keras Callbacks Explained In Three Minutes