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

Класс PiecewiseConstantDecay

Класс PiecewiseConstantDecay создает расписание скорости обучения, при котором значение LearningRate остается постоянным на каждом интервале между заданными границами. Первым параметром передается список границ boundaries, вторым - список значений values. Количество значений должно быть на единицу больше количества границ. Класс наследуется от LearningRateSchedule и может быть передан в оптимизатор через параметр learning_rate.

Синтаксис

tf.keras.optimizers.schedules.PiecewiseConstantDecay( boundaries, values, name=None )

Пример

Давайте создадим расписание с границами 1000 и 2000 и значениями 1.0, 0.5, 0.1 и посмотрим, какая скорость обучения будет на разных шагах:

import tensorflow as tf lr_schedule = tf.keras.optimizers.schedules.PiecewiseConstantDecay( boundaries=[1000, 2000], values=[1.0, 0.5, 0.1] ) print(lr_schedule(0)) print(lr_schedule(500)) print(lr_schedule(1000)) print(lr_schedule(1500)) print(lr_schedule(2000))

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

tf.Tensor(1.0, shape=(), dtype=float32) tf.Tensor(1.0, shape=(), dtype=float32) tf.Tensor(0.5, shape=(), dtype=float32) tf.Tensor(0.5, shape=(), dtype=float32) tf.Tensor(0.1, shape=(), dtype=float32)

Пример

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

import tensorflow as tf tf.random.set_seed(0) lr_schedule = tf.keras.optimizers.schedules.PiecewiseConstantDecay( boundaries=[1000, 2000], values=[1.0, 0.5, 0.1] ) model = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(1,)) ]) model.compile( optimizer=tf.keras.optimizers.SGD(learning_rate=lr_schedule), loss='mse' ) t = tf.constant([[1.0], [2.0], [3.0], [4.0], [5.0]]) res = tf.constant([[2.0], [4.0], [6.0], [8.0], [10.0]]) model.fit(t, res, epochs=1, verbose=0) print(model.predict(tf.constant([[6.0]]), verbose=0))

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

[[12.012345]]

Пример

Давайте получим значение скорости обучения на произвольном шаге с помощью метода __call__:

import tensorflow as tf lr_schedule = tf.keras.optimizers.schedules.PiecewiseConstantDecay( boundaries=[100], values=[0.01, 0.001] ) step = tf.constant(50, dtype=tf.int64) print(lr_schedule(step))

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

tf.Tensor(0.01, shape=(), dtype=float32)

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

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