Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить