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

Класс InverseTimeDecay

Класс InverseTimeDecay создает график скорости обучения, при котором скорость обучения уменьшается по формуле initial_learning_rate / (1 + decay_rate * step / decay_steps). Первым параметром передается начальная скорость обучения, вторым - количество шагов до применения затухания, третьим - скорость затухания. Четвертым необязательным параметром можно передать флаг staircase, который делает изменение скорости обучения ступенчатым.

Синтаксис

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

Пример

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

import tensorflow as tf lr_schedule = tf.keras.optimizers.schedules.InverseTimeDecay( initial_learning_rate=0.1, decay_steps=1.0, decay_rate=0.5 ) for step in range(5): lr = lr_schedule(step) print(f"Step {step}: lr = {lr.numpy():.4f}")

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

Step 0: lr = 0.1000 Step 1: lr = 0.0667 Step 2: lr = 0.0500 Step 3: lr = 0.0400 Step 4: lr = 0.0333

Пример

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

import tensorflow as tf lr_schedule = tf.keras.optimizers.schedules.InverseTimeDecay( initial_learning_rate=0.1, decay_steps=2.0, decay_rate=0.5, staircase=True ) for step in range(6): lr = lr_schedule(step) print(f"Step {step}: lr = {lr.numpy():.4f}")

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

Step 0: lr = 0.1000 Step 1: lr = 0.1000 Step 2: lr = 0.0667 Step 3: lr = 0.0667 Step 4: lr = 0.0500 Step 5: lr = 0.0500

Пример

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

import tensorflow as tf tf.random.set_seed(0) lr_schedule = tf.keras.optimizers.schedules.InverseTimeDecay( initial_learning_rate=0.01, decay_steps=10.0, decay_rate=0.5 ) optimizer = tf.keras.optimizers.SGD(learning_rate=lr_schedule) model = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(1,)) ]) model.compile(optimizer=optimizer, loss='mse') x = tf.constant([[1.0], [2.0], [3.0], [4.0]]) y = tf.constant([[2.0], [4.0], [6.0], [8.0]]) history = model.fit(x, y, epochs=3, verbose=0) print(f"Final loss: {history.history['loss'][-1]:.4f}")

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

Final loss: 0.3195

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

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