Spec-Zone.ru › TensorFlow

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API