因为当您使用自适应优化器时(调用 .fit() 时学习率计划会重置),在线学习不能很好地与 Keras 配合使用,所以我想看看是否可以手动设置它。然而,为了做到这一点,我需要找出最后一个时期的学习率。

也就是说,我如何打印每个时期的学习率?我想我可以通过回调来做到这一点,但似乎你每次都必须重新计算它,我不知道如何对亚当做到这一点。

我在另一个线程中找到了这个,但它只适用于 SGD:

class SGDLearningRateTracker(Callback):
    def on_epoch_end(self, epoch, logs={}):
        optimizer = self.model.optimizer
        lr = K.eval(optimizer.lr * (1. / (1. + optimizer.decay * optimizer.iterations)))
        print('\nLR: {:.6f}\n'.format(lr))

最佳答案

我发现 this question 很有帮助。回答您的问题的最小可行示例是:

def get_lr_metric(optimizer):
    def lr(y_true, y_pred):
        return optimizer.lr
    return lr

optimizer = keras.optimizers.Adam()
lr_metric = get_lr_metric(optimizer)

model.compile(
    optimizer=optimizer,
    metrics=['accuracy', lr_metric],
    loss='mean_absolute_error',
    )

关于python - 如何使用 Keras 中的 Adam 优化器在每个时期打印学习率?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47490834/

10-11 06:52