【问题标题】:Properly set up exponential decay of learning rate in tensorflow正确设置了TENSORFLOF中的学习率的指数衰减
【发布时间】:2020-08-16 12:47:10
【问题描述】:

我需要每 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 除了在the code 中它被实现为:

decayed_learning_rate = learning_rate *
                      decay_rate ^ (global_step / decay_steps)

据我所知,decay_rate 应该是 1 - decay_factordecay_steps 应该表示在应用衰减之前执行了多少步,在我的例子中是 my_steps_per_epoch*10。对吗?

编辑:

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

【问题讨论】:

    标签: python tensorflow deep-learning learning-rate


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      相关资源
      最近更新 更多