tf.keras.optimizers.schedules.CosineDecay
Расписание, которое использует косинусное убывание с необязательным разогревом.
Наследуется от: LearningRateSchedule
tf.keras.optimizers.schedules.CosineDecay(
initial_learning_rate,
decay_steps,
alpha=0.0,
name='CosineDecay',
warmup_target=None,
warmup_steps=0
)
См. Loshchilov & Hutter, ICLR2016, SGDR: Stochastic Gradient Descent with Warm Restarts.
По поводу идеи линейного разогрева скорости обучения см. Goyal et al..
При запуске обучения модели часто требуется первоначальное увеличение скорости обучения, за которым следует убывание. Если warmup_target — целое число, это расписание применяет линейное увеличение скорости обучения на шаг оптимизатора от initial_learning_rate до warmup_target в течение warmup_steps. Затем применяется функция косинусного убывания, принимающая скорость обучения от warmup_target до alpha в течение decay_steps. Если warmup_target равно None, разогрев пропускается, а убывание будет принимать скорость обучения от initial_learning_rate до alpha. Требуется значение step для вычисления скорости обучения. Можно просто передать переменную бэкенда, которую вы инкрементируете на каждом шаге обучения.
Расписание — это вызываемый объект с 1 аргументом, который производит разогрев, за которым следует убывающая скорость обучения, при передаче текущего шага оптимизатора. Это может быть полезно для изменения значения скорости обучения в различных вызовах функций оптимизатора.
Наш разогрев вычисляется следующим образом:
def warmup_learning_rate(step):
completed_fraction = step / warmup_steps
total_delta = target_warmup - initial_learning_rate
return completed_fraction * total_delta
А наше убывание вычисляется следующим образом:
if warmup_target is None:
initial_decay_lr = initial_learning_rate
else:
initial_decay_lr = warmup_target
def decayed_learning_rate(step):
step = min(step, decay_steps)
cosine_decay = 0.5 * (1 + cos(pi * step / decay_steps))
decayed = (1 - alpha) * cosine_decay + alpha
return initial_decay_lr * decayed
Пример использования без разогрева:
decay_steps = 1000
initial_learning_rate = 0.1
lr_decayed_fn = keras.optimizers.schedules.CosineDecay(
initial_learning_rate, decay_steps)
Пример использования с разогревом:
decay_steps = 1000
initial_learning_rate = 0
warmup_steps = 1000
target_learning_rate = 0.1
lr_warmup_decayed_fn = keras.optimizers.schedules.CosineDecay(
initial_learning_rate, decay_steps, warmup_target=target_learning_rate,
warmup_steps=warmup_steps
)
Вы можете напрямую передать это расписание в keras.optimizers.Optimizer в качестве скорости обучения. Расписание скорости обучения также сериализуемо и десериализуемо с помощью keras.optimizers.schedules.serialize и keras.optimizers.schedules.deserialize.
| Args | |
|---|---|
initial_learning_rate | Вещественное число Python. Начальная скорость обучения. |
decay_steps | Целое число Python. Количество шагов для убывания. |
alpha | Вещественное число Python. Минимальное значение скорости обучения для убывания как доля от initial_learning_rate. |
name | Строка. Необязательное имя операции. По умолчанию "CosineDecay". |
warmup_target | Вещественное число Python. Целевая скорость обучения для нашей фазы разогрева. Будет приведено к типу данных initial_learning_rate. Установка в значение None пропустит разогрев и начнёт фазу убывания со значения initial_learning_rate. В противном случае расписание будет разогреваться от initial_learning_rate до warmup_target. |
warmup_steps | Целое число Python. Количество шагов для разогрева. |
| Returns | |
|---|---|
Вызываемый объект с 1 аргументом для расписания скорости обучения, который принимает текущий шаг оптимизатора и возвращает убывающую скорость обучения, скалярный тензор того же типа, что и initial_learning_rate. |
Методы
from_config
@classmethod
from_config(
config
)
Создаёт экземпляр LearningRateSchedule из его конфигурации.
| Args | |
|---|---|
config | Выход get_config(). |
| Returns | |
|---|---|
Экземпляр LearningRateSchedule. |
get_config
get_config()
__call__
__call__(
step
)
Вызвать себя как функцию.
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/optimizers/schedules/CosineDecay