sal*_*izl 9 python tensorflow2.0
我想在tensorflow2.0的SGD优化器中降低学习率,我使用了这行代码:
lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(
initial_learning_rate=self.parameter['learning_rate'],
decay_steps=(1000),
decay_rate=self.parameter['lr_decay']
)
opt = tf.keras.optimizers.SGD(learning_rate=lr_schedule, momentum=0.9)
Run Code Online (Sandbox Code Playgroud)
但是我不知道我的学习率是否下降了,我如何才能获得我当前的学习率?
_decayed_lr方法根据迭代次数衰减 learning_rate 为并返回该特定迭代的实际学习率。它还将返回值转换为您指定的类型。因此,以下代码可以为您完成这项工作:
opt._decayed_lr(tf.float32)
Run Code Online (Sandbox Code Playgroud)
@Lisanu 的回答也对我有用。
这就是为什么这个答案是有效的:
这个tensorflow的github网页显示了tf.keras.optimizers.
如果向下滚动,会出现一个名为 的函数,它_decayed_lr允许用户以 dtype=var_dtype 的张量形式获取衰减的学习率。
因此,通过使用optimizer._decayed_lr(tf.float32),我们可以获得当前的衰减学习率。
如果您想在 Tensorflow 训练期间打印当前衰减的学习率,您可以定义一个自定义回调类并利用optimizer._decayed_lr(tf.float32). 示例如下:
class CustomCallback(tf.keras.callbacks.Callback):
def on_epoch_begin(self, epoch, logs=None):
current_decayed_lr = self.model.optimizer._decayed_lr(tf.float32).numpy()
print("current decayed lr: {:0.7f}".format(current_decayed_lr))
Run Code Online (Sandbox Code Playgroud)