Метод on_epoch_begin класса Callback
Метод on_epoch_begin принадлежит классу Callback и вызывается в начале каждой эпохи.
Он применяется для выполнения действий, которые должны произойти до начала обработки данных в эпохе:
например, для сброса состояния, логирования или изменения параметров.
Первым параметром метод принимает номер текущей эпохи epoch,
вторым - словарь logs с дополнительной информацией.
Метод не возвращает значимого значения, а его результат влияет только на побочные эффекты внутри обучения.
Синтаксис
class MyCallback(tf.keras.callbacks.Callback):
def on_epoch_begin(self, epoch, logs=None):
pass
Пример
Давайте создадим простой колбэк, который выводит номер эпохи в начале каждой эпохи:
import tensorflow as tf
class EpochBeginLogger(tf.keras.callbacks.Callback):
def on_epoch_begin(self, epoch, logs=None):
print("Epoch begin:", epoch)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(optimizer="sgd", loss="mse")
callback = EpochBeginLogger()
model.fit([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], epochs=3, callbacks=[callback], verbose=0)
Результат выполнения кода:
"Epoch begin: 0"
"Epoch begin: 1"
"Epoch begin: 2"
Пример
Давайте используем метод on_epoch_begin для сохранения значения потерь на начало эпохи:
import tensorflow as tf
class LossTracker(tf.keras.callbacks.Callback):
def on_epoch_begin(self, epoch, logs=None):
self.start_loss = logs.get("loss") if logs else None
print("Start loss:", self.start_loss)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(optimizer="sgd", loss="mse")
callback = LossTracker()
model.fit([1, 2, 3, 4, 5], [1, 2, 3, 4, 5], epochs=3, callbacks=[callback], verbose=0)
Результат выполнения кода:
"Start loss: None"
"Start loss: None"
"Start loss: None"
Смотрите также
-
класс
Callback,
который является базовым классом для всех колбэков -
метод
on_epoch_end,
который вызывается в конце каждой эпохи -
метод
on_batch_begin,
который вызывается перед обработкой каждого батча -
метод
on_train_begin,
который вызывается перед началом обучения