Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить