Обратные вызовы Keras за 2 минуты


Что такое обратный вызов 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.


Перевод статьи


Поделиться статьей:


Вернуться к статьям

Комментарии

    Ничего не найдено.