РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
423 of 824 menu

Класс ReduceLROnPlateau

Класс ReduceLROnPlateau представляет собой колбэк, который снижает скорость обучения модели в процессе тренировки, если указанная метрика (например, потери на валидации) перестает улучшаться в течение заданного числа эпох. Первым параметром передается monitor - имя метрики для отслеживания, вторым - factor - коэффициент, на который умножается текущая скорость обучения. Третьим параметром является patience - количество эпох без улучшений перед снижением. Также доступны параметры mode, min_delta, cooldown, min_lr и другие.

Синтаксис

tf.keras.callbacks.ReduceLROnPlateau( monitor='val_loss', factor=0.1, patience=10, mode='auto', min_delta=0.0001, cooldown=0, min_lr=0.0, verbose=0 )

Пример

Давайте создадим простую модель и обучим ее с колбэком ReduceLROnPlateau, который будет следить за потерями на валидации. Зафиксируем зерно для воспроизводимости:

import tensorflow as tf tf.random.set_seed(0) # Create a simple model model = tf.keras.Sequential([ tf.keras.layers.Dense(10, activation='relu', input_shape=(5,)), tf.keras.layers.Dense(1) ]) model.compile(optimizer='adam', loss='mse') # Create dummy data import numpy as np x = np.random.rand(100, 5) y = np.random.rand(100, 1) # Define the callback lr_callback = tf.keras.callbacks.ReduceLROnPlateau( monitor='val_loss', factor=0.5, patience=3, verbose=1 ) # Train the model history = model.fit( x, y, validation_split=0.2, epochs=10, batch_size=16, callbacks=[lr_callback], verbose=0 ) print("Training finished.")

Результат выполнения кода:

"Training finished."

Пример

Давайте посмотрим, как изменяется скорость обучения после срабатывания колбэка. Для этого выведем текущий learning rate до и после тренировки:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(10, activation='relu', input_shape=(5,)), tf.keras.layers.Dense(1) ]) optimizer = tf.keras.optimizers.Adam(learning_rate=0.01) model.compile(optimizer=optimizer, loss='mse') import numpy as np x = np.random.rand(100, 5) y = np.random.rand(100, 1) lr_callback = tf.keras.callbacks.ReduceLROnPlateau( monitor='val_loss', factor=0.1, patience=2, verbose=1 ) print("Initial learning rate:", optimizer.learning_rate.numpy()) model.fit( x, y, validation_split=0.2, epochs=10, batch_size=16, callbacks=[lr_callback], verbose=0 ) print("Final learning rate:", optimizer.learning_rate.numpy())

Результат выполнения кода:

Initial learning rate: 0.01 Final learning rate: 0.001

Смотрите также

  • класс EarlyStopping,
    который останавливает обучение при отсутствии улучшений
  • класс LearningRateScheduler,
    который позволяет задать собственное расписание скорости обучения
  • класс ModelCheckpoint,
    который сохраняет модель во время обучения
  • класс Adam,
    который является одним из популярных оптимизаторов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить