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.fit
和initial_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)