1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Python_Ai_Road-eat_tensorflow2_in_30_days

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Chapter5-8.md 7.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 03.12.2024 15:14 374a95e

5–8 callbacks

Обратные вызовы в tf.keras — это класс, обычно задаваемый как параметр при использовании model.fit. Он обеспечивает дополнительные операции в начале или в конце обучения, каждой эпохи или каждого пакета. Эти операции включают запись некоторой информации в журнал, изменение скорости обучения, досрочное завершение обучения и т. д.

Аналогично этот параметр обратных вызовов также может быть указан для model.evaluate или model.predict, обеспечивая дополнительные операции в начале или в конце оценки, прогнозирования или каждого пакета. Однако этот метод используется редко.

В большинстве случаев предопределённых обратных вызовов в подмодуле keras.callbacks достаточно. При необходимости можно определить дочерний класс, наследующий keras.callbacks.Callbacks, для настройки обратных вызовов.

Все классы обратных вызовов наследуют keras.callbacks.Callbacks, который содержит два атрибута: params и model.

params — это словарь, в котором записываются параметры обучения (например, подробность, размер пакета, количество эпох и т.д.). model — это ссылка на текущую модель.

Кроме того, в определённых методах классов обратных вызовов есть дополнительный аргумент logs, такой как on_epoch_begin, on_batch_end. Этот параметр предоставляет определённую информацию о текущей эпохе или пакете и позволяет сохранять результаты вычислений. Эти переменные logs могут передаваться между функциями с одинаковыми именами в этих классах обратных вызовов.

1. Предопределённые обратные вызовы

  • BaseLogger: он вычисляет средние показатели по всем пакетам для каждой эпохи. Для тех показателей со средним статусом в staeful_metrics он использует окончательные показатели без вычисления среднего значения для всех пакетов, а окончательное среднее значение добавляется в переменную logs. Этот обратный вызов автоматически применяется к каждой модели Keras и применяется первым.
  • History: словарь, который записывает показатели каждой эпохи, рассчитанные BaseLogger, и возвращается model.fit. Этот обратный вызов автоматически применяется к каждой модели Keras после BaseLogger.
  • EarlyStopping: этот обратный вызов завершает обучение, если показатели мониторинга существенно не увеличиваются после определённого количества эпох.
  • TensorBoard: этот обратный вызов сохраняет визуализированный журнал Tensorboard. Он поддерживает визуализацию метрик, графиков и параметров в модели.
  • ModelCheckpoint: этот обратный вызов сохраняет модель после каждой эпохи.
  • ReduceLROnPlateau: этот обратный вызов уменьшает скорость обучения с определённой скоростью, если показатели мониторинга существенно не увеличиваются после определённого количества эпох.
  • TerminateOnNaN: завершить обучение, если потеря равна NaN.
  • LearningRateScheduler: он контролирует скорость обучения перед каждой эпохой с заданной функцией между скоростью обучения lr и эпохой.
  • CSVLogger: сохранение logs каждой эпохи в CSV-файл.
  • ProgbarLogger: печать logs каждой эпохи в стандартный поток ввода-вывода.

2. Настраиваемые обратные вызовы

Можно написать простой обратный вызов через callbacks.LambdaCallback или написать сложный обратный вызов путём наследования базового класса callbacks.Callback.

Не стесняйтесь читать исходный код, чтобы узнать больше о обратных вызовах в tf.Keras. ``` def on_epoch_begin(self, эпоха, logs=None): if not hasattr(self.model.optimizer, 'lr'): raise ValueError('Optimizer must have a "lr" attribute.') try:
lr = float(K.get_value(self.model.optimizer.lr)) lr = self.schedule(эпоха, lr) except TypeError: # Support for old API for backward compatibility lr = self.schedule(эпоха) if not isinstance(lr, (tf.Tensor, float, np.float32, np.float64)): raise ValueError('The output of the "schedule" function ' 'should be float.') if isinstance(lr, ops.Tensor) and not lr.dtype.is_floating: raise ValueError('The dtype of Tensor should be float') K.set_value(self.model.optimizer.lr, K.get_value(lr)) if self.verbose > 0: print('\nЭпоха %05d: LearningRateScheduler уменьшает скорость обучения до %s.' % (эпоха + 1, lr))

def on_epoch_end(self, эпоха, logs=None):
    logs = logs or {}
    logs['lr'] = K.get_value(self.model.optimizer.lr)

Please leave comments in the WeChat official account "Python与算法之美" (Elegance of Python and Algorithms) if you want to communicate with the author about the content. The author will try best to reply given the limited time available.

You are also welcomed to join the group chat with the other readers through replying **加群 (join group)** in the WeChat official account.

![image.png](../data/Python与算法之美logo.jpg)

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/Python_Ai_Road-eat_tensorflow2_in_30_days.git
git@api.gitlife.ru:oschina-mirror/Python_Ai_Road-eat_tensorflow2_in_30_days.git
oschina-mirror
Python_Ai_Road-eat_tensorflow2_in_30_days
Python_Ai_Road-eat_tensorflow2_in_30_days
master