正确设置张量流中学习率的指数衰减

Fi *_*Ras 6 python deep-learning tensorflow learning-rate

我需要每 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)
Run Code Online (Sandbox Code Playgroud)

指数衰减的公式为current_lr = initial_lr * (1 - decay_factor)^t 除了在代码中它实现为:

decayed_learning_rate = learning_rate *
                      decay_rate ^ (global_step / decay_steps)
Run Code Online (Sandbox Code Playgroud)

据我所知,在我的例子中,decay_rate应该是1 - decay_factor并且decay_steps应该意味着在应用衰减之前执行了多少步my_steps_per_epoch*10。那是对的吗?

编辑:

如果我在第 10 个纪元后暂停并保存模型(使用回调),然后通过加载模型并使用model.fitinitial_epoch=10调用来恢复epochs=11,它会在第 11 个纪元开始并应用指数衰减吗?

小智 7

decay_steps可用于说明在多少步(已处理的批次)后您将衰减学习率。我发现仅指定初始和最终学习率并通过以下方式自动计算 Decay_factor 非常有用:

initial_learning_rate = 0.1
final_learning_rate = 0.0001
learning_rate_decay_factor = (final_learning_rate / initial_learning_rate)**(1/epochs)
steps_per_epoch = int(train_size/batch_size)

lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(
                initial_learning_rate=initial_learning_rate,
                decay_steps=steps_per_epoch,
                decay_rate=learning_rate_decay_factor,
                staircase=True)
Run Code Online (Sandbox Code Playgroud)