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

Класс CosineDecay

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

Синтаксис

tf.keras.optimizers.schedules.CosineDecay( initial_learning_rate, decay_steps, alpha=0.0, warmup_target=None, warmup_steps=0 )

Пример

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

import tensorflow as tf schedule = tf.keras.optimizers.schedules.CosineDecay( initial_learning_rate=0.1, decay_steps=10 ) res = schedule(0) print(res)

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

0.1

Пример

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

import tensorflow as tf schedule = tf.keras.optimizers.schedules.CosineDecay( initial_learning_rate=0.1, decay_steps=10 ) for step in [0, 2, 5, 10]: print(step, schedule(step).numpy())

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

0 0.1 2 0.09045085 5 0.05 10 0.0

Пример

Давайте зададим минимальную скорость обучения через параметр alpha, равный 0.01:

import tensorflow as tf schedule = tf.keras.optimizers.schedules.CosineDecay( initial_learning_rate=0.1, decay_steps=10, alpha=0.01 ) for step in [0, 5, 10]: print(step, schedule(step).numpy())

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

0 0.1 5 0.0505 10 0.001

Пример

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

import tensorflow as tf schedule = tf.keras.optimizers.schedules.CosineDecay( initial_learning_rate=0.1, decay_steps=10 ) optimizer = tf.keras.optimizers.SGD(learning_rate=schedule) var = tf.Variable([1.0, 2.0, 3.0]) with tf.GradientTape() as tape: loss = tf.reduce_sum(var ** 2) grads = tape.gradient(loss, [var]) optimizer.apply_gradients(zip(grads, [var])) print(var.numpy())

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

[0.8 1.6 2.4]

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

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