tf.keras.experimental.NoisyLinearCosineDecay
| Просмотреть исходный код на GitHub |
Расписание для скорости обучения, использующее шумное линейное косинусное расписание.
Наследуется от: LearningRateSchedule
tf.keras.experimental.NoisyLinearCosineDecay(
initial_learning_rate, decay_steps, initial_variance=1.0, variance_decay=0.55,
num_periods=0.5, alpha=0.0, beta=0.001, name=None
)
См. [Bello и др., 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 + eps_t) * cosine_decay + beta
return initial_learning_rate * decayed
где eps_t — гауссовский шум со средним значением 0 и дисперсией initial_variance / (1 + global_step) ** variance_decay
Пример использования:
decay_steps = 1000
lr_decayed_fn = (
tf.keras.experimental.NoisyLinearCosineDecay(
initial_learning_rate, decay_steps))
Вы можете напрямую передать это расписание в tf.keras.optimizers.Optimizer в качестве скорости обучения. Расписание скорости обучения также сериализуемо и десериализуемо с помощью tf.keras.optimizers.schedules.serialize и tf.keras.optimizers.schedules.deserialize.
| Возвращает | |
|---|---|
Расписание скорости обучения, принимающее в качестве аргумента текущий шаг оптимизатора и возвращающее уменьшенную скорость обучения, скаляр Tensor того же типа, что и initial_learning_rate. |
| Аргументы | |
|---|---|
initial_learning_rate | Скаляр float32 или float64 Tensor или число Python. Начальная скорость обучения. |
decay_steps | Скаляр int32 или int64 Tensor или число Python. Количество шагов для распада. |
initial_variance | Начальная дисперсия для шума. См. вычисление выше. |
variance_decay | Дисперсия шума. См. вычисление выше. |
num_periods | Количество периодов в косинусной части распада. См. вычисление выше. |
alpha | См. вычисление выше. |
beta | См. вычисление выше. |
name | Строка. Необязательное имя операции. По умолчанию 'NoisyLinearCosineDecay'. |
Методы
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/NoisyLinearCosineDecay