Spec-Zone.ru › TensorFlow

tf.compat.v1.train.polynomial_decay

Применяет полиномиальное уменьшение скорости обучения.

tf.compat.v1.train.polynomial_decay(
    learning_rate,
    global_step,
    decay_steps,
    end_learning_rate=0.0001,
    power=1.0,
    cycle=False,
    name=None
)

Используется в блокнотах

Используется в руководстве Используется в учебниках
  • Отладка конвейера обучения TensorFlow 2 после миграции
  • Построение модели смешения процессов Дирихле с использованием условного стохастического градиентного метода Ланжевена

Часто наблюдается, что монотонно убывающая скорость обучения, степень изменения которой тщательно выбрана, приводит к лучшей производительности модели. Эта функция применяет полиномиальную функцию уменьшения к предоставленной начальной learning_rate, чтобы достичь end_learning_rate в заданном decay_steps.

Для вычисления уменьшенной скорости обучения требуется значение global_step. Вы можете просто передать переменную TensorFlow, которую вы увеличиваете на каждом шаге обучения.

Функция возвращает уменьшенную скорость обучения. Она вычисляется следующим образом:

global_step = min(global_step, decay_steps)
decayed_learning_rate = (learning_rate - end_learning_rate) *
                        (1 - global_step / decay_steps) ^ (power) +
                        end_learning_rate

Если cycle равно True, то используется кратное decay_steps, первое из которых больше global_steps.

decay_steps = decay_steps * ceil(global_step / decay_steps)
decayed_learning_rate = (learning_rate - end_learning_rate) *
                        (1 - global_step / decay_steps) ^ (power) +
                        end_learning_rate

Пример: уменьшение от 0,1 до 0,01 за 10000 шагов, используя корень квадратный (т.е. power=0,5):

...
global_step = tf.Variable(0, trainable=False)
starter_learning_rate = 0.1
end_learning_rate = 0.01
decay_steps = 10000
learning_rate = tf.compat.v1.train.polynomial_decay(starter_learning_rate,
global_step,
                                          decay_steps, end_learning_rate,
                                          power=0.5)
# Passing global_step to minimize() will increment it at each step.
learning_step = (
    tf.compat.v1.train.GradientDescentOptimizer(learning_rate)
    .minimize(...my loss..., global_step=global_step)
)
Аргументы
learning_rate Скалярная float32 или float64 Tensor или число Python. Начальная скорость обучения.
global_step Скалярный int32 или int64 Tensor или число Python. Глобальный шаг для вычисления уменьшения. Не должен быть отрицательным.
decay_steps Скалярный int32 или int64 Tensor или число Python. Должен быть положительным. См. вычисление уменьшения выше.
end_learning_rate Скалярный float32 или float64 Tensor или число Python. Минимальная конечная скорость обучения.
power Скалярный float32 или float64 Tensor или число Python. Степень полинома. По умолчанию линейная, 1,0.
cycle Булево значение, указывает, нужно ли циклически продолжать уменьшение за пределами decay_steps.
name Строка. Необязательное имя операции. По умолчанию 'PolynomialDecay'.
Возвращает
Скаляр Tensor того же типа, что и learning_rate. Уменьшенная скорость обучения.
Исключения
ValueError если global_step не указано.

совместимость с eager

Когда включено выполнение eager, эта функция возвращает функцию, которая в свою очередь возвращает тензор уменьшенной скорости обучения. Это может быть полезно для изменения значения скорости обучения при разных вызовах функций оптимизатора.

© 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/compat/v1/train/polynomial_decay

Spec-Zone.ru

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