Что такое обратный вызов Keras?

Из документации 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, если хотите перезаписать последнюю лучшую модель.
  • modeautomin или 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.

Читайте также:


Перевод статьи Andre DuongKeras Callbacks Explained In Three Minutes

Предыдущая статьяАнализ независимых компонент в Python
Следующая статьяКак не лажать с JavaScript. Часть 4