Обратные вызовы в 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
могут передаваться между функциями с одинаковыми именами в этих классах обратных вызовов.
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
каждой эпохи в стандартный поток ввода-вывода.Можно написать простой обратный вызов через 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.

Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )