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] Neural Optimizer Search with RL. https://arxiv.org/abs/1709.07417
Для идеи тёплых стартов, управляемых num_periods, см. [Loshchilov & Hutter, ICLR2016] SGDR: Stochastic Gradient Descent with Warm Restarts. 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 Tensor или число 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
)
Вызвать self как функцию.
© 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.3/api_docs/python/tf/keras/experimental/LinearCosineDecay