Класс 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,
который реализует обратное временное затухание скорости обучения