Класс 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,
который реализует полиномиальное затухание скорости обучения