keras - 如何显示一个epoch后最后使用的学习率

标签 keras

我尝试了几种方法来显示在 Keras 的最后一个时期有效使用的模型的学习率。

一些研究表明,可以使用回调更改学习率,或使用自定义指标显示学习率。 但无论我尝试什么方法,显示的学习率始终是原始学习率。

一些答案​​暗示应该根据公式重新计算多少费率。但是我想要的只是简单地得到用于反向传播的学习率,而不是根据算法计算它。

这是我使用的一些代码:

callback_list = []
metric_list = ['accuracy']

# Add checkpoints to save weights in case the test set acc improved
#...

if show_learn_param:
    learn_param = Callback_show_learn_param()
    callback_list.append(learn_param)

    # Add metric if needed
    def get_lr_metric(optimizer):
        def lr(y_true, y_pred):
            return optimizer.lr #K.eval(optimizer.lr)
        return lr

    lr_metric = get_lr_metric(optimizer)
    metric_list.append(lr_metric)

这里是回调的定义:

class Callback_show_learn_param(Callback):
    def on_epoch_end(self, epoch, logs=None):
        lr = self.model.optimizer.lr
        decay = self.model.optimizer.decay
        iterations = self.model.optimizer.iterations
        lr_with_decay = lr / (1. + decay * K.cast(iterations, K.dtype(decay)))

        # Beta values
        beta_1=self.model.optimizer.beta_1
        beta_2=self.model.optimizer.beta_2
        print("lr", K.eval(lr), "decay", K.eval(decay), "lr_with_decay", K.eval(lr_with_decay),
              "beta_1", K.eval(beta_1), "beta_2", K.eval(beta_2))

基本上,显示的值是恒定的,不会改变。它对 beta 值和衰减有意义。显示的学习率似乎是初始的。对于学习率,我找不到一种方法来显示这个简单的值:实际使用的有效学习率。

顺便说一句,有一种更简单的方法来显示这个初始学习率:

import keras.backend as K
print(K.eval(model.optimizer.lr))

最佳答案

您需要使用K.get_value 来获取学习率。看看LearningRateScheduler以及该回调如何从模型中获取学习率。在您的情况下,您应该能够打印学习率:

def on_epoch_end(self, epoch, logs=None):
  lr = float(K.get_value(self.model.optimizer.lr))
  print("Learning rate:", lr)

关于keras - 如何显示一个epoch后最后使用的学习率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50487633/

相关文章:

python - 简单的递归神经网络输入形状

python - 使用 python 3.7.3 安装 keras 时遇到问题

python - 如何将 Scikit-Learn-Keras 模型保存到持久性文件 (pickle/hd5/json/yaml)

python - 保存来自自动编码器的解码图像

python - 如何构建具有多个输入的 Tensorflow 模型?

python - 带参数的自定义激活

python - Tensorflow 2.8.0 - 自定义层无法使用 tf.map_fn(tf.range,...)

tensorflow - 在 Keras 模型中使用 Tensorflow feature_column

python - gcloud ml-engine IOError : file does not exist

python - 具有非方形图像的 CNN 自动编码器