Spec-Zone.ru › TensorFlow 2.3

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
)

Часто наблюдается, что монотонно убывающая скорость обучения, степень изменения которой тщательно подобрана, приводит к лучшему результату модели. Данная функция применяет полиномиальную функцию уменьшения к предоставленной начальной 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 шагов с использованием sqrt (т.е. 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)
)
Args
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'.
Returns
Скалярная Tensor того же типа, что и learning_rate. Уменьшенная скорость обучения.
Raises
ValueError если global_step не предоставлено.

Совместимость с Eager

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

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

Spec-Zone.ru

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