tf.keras.experimental.LinearCosineDecay
| Просмотреть исходный код на GitHub |
Расписание изменения скорости обучения, использующее линейное косинусное расписание.
Наследуется от: LearningRateSchedule
tf.keras.experimental.LinearCosineDecay(
initial_learning_rate, decay_steps, num_periods=0.5, alpha=0.0, beta=0.001,
name=None
)
См. [Bello et al., ICML2017] Поиск нейронных оптимизаторов с использованием RL. https://arxiv.org/abs/1709.07417
По поводу идеи теплого старта, контролируемого num_periods, см. [Loshchilov & Hutter, ICLR2016] SGDR: стохастический градиентный спуск с тёплыми перезапусками. https://arxiv.org/abs/1608.03983
Обратите внимание, что линейное косинусное расписание более агрессивное, чем косинусное расписание, и обычно можно использовать более высокие начальные скорости обучения.
При обучении модели часто рекомендуется снижать скорость обучения по мере обучения. Это расписание применяет линейную косинусовую функцию убывания к шагу оптимизатора, принимая во внимание предоставленную начальную скорость обучения. Для вычисления убывающей скорости обучения требуется step значение. Вы можете просто передать переменную TensorFlow, которую вы увеличиваете на каждом шаге обучения.
Расписание — это вызываемая функция с 1 аргументом, которая производит убывающую скорость обучения, когда ей передаётся текущий шаг оптимизатора. Это может быть полезно для изменения значения скорости обучения при разных вызовах функций оптимизатора. Она вычисляется следующим образом:
def decayed_learning_rate(step):
step = min(step, decay_steps)
linear_decay = (decay_steps - step) / decay_steps
cosine_decay = 0.5 * (
1 + cos(pi * 2 * num_periods * step / decay_steps))
decayed = (alpha + linear_decay) * cosine_decay + beta
return initial_learning_rate * decayed
Пример использования:
decay_steps = 1000
lr_decayed_fn = (
tf.keras.experimental.LinearCosineDecay(
initial_learning_rate, decay_steps))
Вы можете передать это расписание непосредственно в tf.keras.optimizers.Optimizer в качестве скорости обучения. Расписание изменения скорости обучения также можно сериализовать и десериализовать с помощью tf.keras.optimizers.schedules.serialize и tf.keras.optimizers.schedules.deserialize.
| Возвращаемое значение | |
|---|---|
Расписание изменения скорости обучения с 1 аргументом, принимающее текущий шаг оптимизатора и возвращающее убывающую скорость обучения, скаляр Tensor того же типа, что и initial_learning_rate. |
| Аргументы | |
|---|---|
initial_learning_rate | Скаляр float32 или float64 тензор или число Python. Начальная скорость обучения. |
decay_steps | Скаляр int32 или int64 Tensor или число Python. Количество шагов для убывания. |
num_periods | Количество периодов в косинусной части убывания. См. вычисление выше. |
alpha | См. вычисление выше. |
beta | См. вычисление выше. |
name | Строка. Необязательное имя операции. По умолчанию 'LinearCosineDecay'. |
Методы
from_config
@classmethod
from_config(
config
)
Инициализирует LearningRateSchedule по его конфигурации.
| Аргументы | |
|---|---|
config | Выход get_config(). |
| Возвращаемое значение | |
|---|---|
Экземпляр LearningRateSchedule . |
get_config
get_config()
__call__
__call__(
step
)
Вызов себя как функции.
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/keras/experimental/LinearCosineDecay