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

Класс ExponentialDecay

Класс ExponentialDecay создает график скорости обучения, который экспоненциально уменьшается с течением времени. Первым параметром передается начальная скорость обучения, вторым - количество шагов до первого затухания, третьим - коэффициент затухания. Также можно указать staircase для ступенчатого изменения скорости.

Синтаксис

tf.keras.optimizers.schedules.ExponentialDecay( initial_learning_rate, decay_steps, decay_rate, staircase=False )

Пример

Давайте создадим график экспоненциального затухания и посмотрим на значения скорости обучения для нескольких шагов:

import tensorflow as tf lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay( initial_learning_rate=0.1, decay_steps=10, decay_rate=0.9 ) for step in [0, 10, 20, 30]: lr = lr_schedule(step) print(f"Step {step}: {lr.numpy():.6f}")

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

Step 0: 0.100000 Step 10: 0.090000 Step 20: 0.081000 Step 30: 0.072900

Пример

Давайте применим график затухания в оптимизаторе и обучим простую модель:

import tensorflow as tf import numpy as np tf.random.set_seed(0) lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay( initial_learning_rate=0.01, decay_steps=100, decay_rate=0.96 ) model = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(1,)) ]) model.compile( optimizer=tf.keras.optimizers.SGD(learning_rate=lr_schedule), loss='mse' ) x = np.array([[1.0], [2.0], [3.0], [4.0]]) y = np.array([[2.0], [4.0], [6.0], [8.0]]) history = model.fit(x, y, epochs=2, verbose=0) print("Training completed")

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

"Training completed"

Пример

Давайте создадим график со ступенчатым изменением скорости обучения:

import tensorflow as tf lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay( initial_learning_rate=0.1, decay_steps=10, decay_rate=0.5, staircase=True ) for step in [0, 9, 10, 19, 20]: lr = lr_schedule(step) print(f"Step {step}: {lr.numpy():.4f}")

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

Step 0: 0.1000 Step 9: 0.1000 Step 10: 0.0500 Step 19: 0.0500 Step 20: 0.0250

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

  • класс Constant,
    который задает постоянную скорость обучения
  • класс PiecewiseConstantDecay,
    который задает ступенчатое изменение скорости обучения
  • класс InverseTimeDecay,
    который реализует обратное временное затухание
  • класс CosineDecay,
    который реализует косинусное затухание скорости обучения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить