在TensorFlow/Keras中,当使用学习率衰减时,恢复训练时的行为是什么?

在TensorFlow/Keras中,当使用学习率衰减时,恢复训练时的行为是什么?,tensorflow,keras,deep-learning,learning-rate,Tensorflow,Keras,Deep Learning,Learning Rate,我很难理解当使用下面这样的调度器时,从磁盘加载模型时如何恢复培训 learning_rate_scheduler = tensorflow.keras.optimizers.schedules.ExponentialDecay( 0.01, decay_steps=1000, decay_rate=0.96, staircase=True) 考虑这个假设的情况,我将模型训练一个历元并保存。后来,我加载了模型并再次拟合。在这种情况下,培训是从先前保存模型时的学习速率恢复,还是从调度器的预定

我很难理解当使用下面这样的调度器时,从磁盘加载模型时如何恢复培训

learning_rate_scheduler = tensorflow.keras.optimizers.schedules.ExponentialDecay(
0.01, 
decay_steps=1000, 
decay_rate=0.96, 
staircase=True)
考虑这个假设的情况,我将模型训练一个历元并保存。后来,我加载了模型并再次拟合。在这种情况下,培训是从先前保存模型时的学习速率恢复,还是从调度器的预定义配置开始

编辑

我以标准方式保存我的模型

model.save("model")
下面是加载后的优化器配置。学习率配置与定义相同

hour_glass_model.optimizer.get_config()

取决于如何保存模型。如果对
Model.save()
使用标准方法,将保存优化器状态。将保存优化器配置。学习速率将从初始值开始

参考:


另请参阅
save
,默认情况下,它包含
include\u optimizer=True

取决于您如何保存模型。如果对
Model.save()
使用标准方法,将保存优化器状态。将保存优化器配置。学习速率将从初始值开始

参考:


另请参见
save
,默认情况下,当您在使用模型后重新启动培训时,它具有
include\u optimizer=True

。使用保存模型时的学习率保存培训。为了确保我使用learning rate scheduler回调编写了一个简单的回调。然后,我训练了一个模型5个时代,保存了模型,加载了模型,然后再次训练。回调打印每个历元开始时的学习率值,并显示训练恢复时学习率保持不变

def scheduler(epoch, lr):
    lrin=lr
    if epoch < 2:
     lrout=lr
    else:
        lrout= lr * .5
    print ('At the start of epoch ', epoch+1, 'lr is ', lrin, ' will be set to ', lrout, ' for epoch ', epoch+2)
    return lrout
lrs=tf.keras.callbacks.LearningRateScheduler(scheduler)

当您在使用model.save后重新启动培训时,它将按照保存模型时的学习速率进行培训。为了确保我使用learning rate scheduler回调编写了一个简单的回调。然后,我训练了一个模型5个时代,保存了模型,加载了模型,然后再次训练。回调打印每个历元开始时的学习率值,并显示训练恢复时学习率保持不变

def scheduler(epoch, lr):
    lrin=lr
    if epoch < 2:
     lrout=lr
    else:
        lrout= lr * .5
    print ('At the start of epoch ', epoch+1, 'lr is ', lrin, ' will be set to ', lrout, ' for epoch ', epoch+2)
    return lrout
lrs=tf.keras.callbacks.LearningRateScheduler(scheduler)

我正在将模型另存为SavedModel。加载的模型的优化器包括带有默认配置的调度程序。因此,我怀疑培训是从初始学习率开始,还是从之前在保存时停止培训时的学习率开始。@sreagm请使用截取的代码更新您的问题,该代码与您保存模型的方式完全匹配。只有这样我才能告诉你,谢谢,@Proko提供了宝贵的提示。我正在将模型保存为SavedModel。加载的模型的优化器包括带有默认配置的调度程序。因此,我怀疑培训是从初始学习率开始,还是从之前在保存时停止培训时的学习率开始。@sreagm请使用截取的代码更新您的问题,该代码与您保存模型的方式完全匹配。只有这样我才能告诉你,谢谢你,@Proko给了我宝贵的指点。谢谢,@Gerry P给了我验证。做得很好。谢谢@Gerry P验证。干得好。
callbacks=[lrs]