Что такое обратный вызов 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.
Читайте также:
- Я хочу изучать AI и машинное обучение. С чего мне начать?
- Оценка производительности нейронной сети Keras с помощью визуализаций Yellowbrick
- Машинное обучение. С чего начать? Часть 1
Перевод статьи Andre Duong: Keras Callbacks Explained In Three Minutes