0

如何获得每个更新的学习率值on_train_batch_begin

lr_decayed_fn = tf.keras.experimental.CosineDecay(initial_lr, decay_steps)
model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=lr_decayed_fn))

我试过这种方式

def on_train_batch_begin (self, batch, logs = None):
    lr = K.get_value(self.model.optimizer.lr)

但我明白了<tensorflow.python.keras.optimizer_v2.learning_rate_schedule.CosineDecay object at 0x7f ...>

4

1 回答 1

4

当您将函数设置为学习率或对象子类LearningRateScheduler化时,您需要使用当前训练步骤调用该函数(或 Callable)以获得学习率。iterations您可以通过使用优化器的属性来获取当前的训练步骤。

class CustomCallback(tf.keras.callbacks.Callback):
    def __init__(self) -> None:
        super().__init__()

    def on_train_batch_begin(self, batch, logs=None):
        lr = tf.keras.backend.get_value(
            self.model.optimizer.lr(self.model.optimizer.iterations)
        )
于 2021-04-09T12:44:36.300 回答