Мне нужно применять экспоненциальный спад скорости обучения каждые 10 эпох. Начальная скорость обучения равна 0.000001
, а коэффициент затухания равен 0.95
. Это правильный способ его настройки?
lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(
initial_learning_rate=0.000001,
decay_steps=(my_steps_per_epoch*10),
decay_rate=0.05)
opt = tf.keras.optimizers.SGD(learning_rate=lr_schedule, momentum=0.9)
Формула экспоненциального спада равна current_lr = initial_lr * (1 - decay_factor)^t
За исключением что в код он реализован следующим образом:
decayed_learning_rate = learning_rate *
decay_rate ^ (global_step / decay_steps)
Насколько мне известно, decay_rate
должно быть 1 - decay_factor
, а decay_steps
должно означать, сколько шагов выполняется перед применением распад, в моем случае my_steps_per_epoch*10
. Это правильно?
РЕДАКТИРОВАТЬ:
Если я сделаю паузу и сохраню свою модель (с помощью обратных вызовов) после 10-й эпохи, а затем продолжу, загрузив модель и вызвав model.fit
с initial_epoch=10
и epochs=11
, начнется ли оно в 11-й эпохе и приведет к экспоненциальному затуханию?