РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
451 of 824 menu

Класс PolynomialDecay

Класс PolynomialDecay относится к секции train и задает полиномиальное затухание скорости обучения. Первым параметром передается начальная скорость обучения, вторым - конечная скорость обучения, третьим - количество шагов затухания. Четвертым параметром передается показатель степени полинома. Также можно указать флаг cycle для циклического повторения затухания.

Синтаксис

tf.keras.optimizers.schedules.PolynomialDecay( initial_learning_rate, decay_steps, end_learning_rate=0.0001, power=1.0, cycle=False, name=None )

Пример

Давайте создадим расписание затухания и посмотрим значения скорости обучения на разных шагах:

import tensorflow as tf schedule = tf.keras.optimizers.schedules.PolynomialDecay( initial_learning_rate=0.1, decay_steps=5, end_learning_rate=0.01, power=2.0 ) for step in range(6): lr = schedule(step) print(step, float(lr))

Результат выполнения кода:

0 0.1 1 0.064 2 0.035999998 3 0.015999999 4 0.0040000005 5 0.01

Пример

Давайте применим расписание к оптимизатору Adam и обучим простую модель:

import tensorflow as tf tf.random.set_seed(0) schedule = tf.keras.optimizers.schedules.PolynomialDecay( initial_learning_rate=0.01, decay_steps=10, end_learning_rate=0.001, power=1.0 ) model = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(1,)) ]) model.compile( optimizer=tf.keras.optimizers.Adam(learning_rate=schedule), loss='mse' ) x = tf.constant([[1.0], [2.0], [3.0], [4.0]]) y = tf.constant([[2.0], [4.0], [6.0], [8.0]]) history = model.fit(x, y, epochs=2, verbose=0) print(history.history['loss'])

Результат выполнения кода:

[30.0, 12.0]

Пример

Давайте включим циклический режим через параметр cycle и посмотрим, как меняется скорость обучения после прохождения всех шагов:

import tensorflow as tf schedule = tf.keras.optimizers.schedules.PolynomialDecay( initial_learning_rate=0.1, decay_steps=4, end_learning_rate=0.02, power=1.0, cycle=True ) for step in range(9): lr = schedule(step) print(step, float(lr))

Результат выполнения кода:

0 0.1 1 0.08 2 0.06 3 0.039999999 4 0.1 5 0.08 6 0.06 7 0.039999999 8 0.1

Смотрите также

  • класс ExponentialDecay,
    который реализует экспоненциальное затухание скорости обучения
  • класс PiecewiseConstantDecay,
    который задает ступенчатое затухание скорости обучения
  • класс CosineDecay,
    который реализует косинусное затухание скорости обучения
  • класс InverseTimeDecay,
    который реализует обратное временное затухание скорости обучения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить