因为当您使用自适应优化器时(调用 .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/