我想在训练期间使用 Tensorflow 的 keras 实现和 Adam 来试验衰减。看起来model.optimizer.lr只是基础学习率,不会随着衰减而改变。对于监控和可视化,看到实际使用价值会让人放心。是否可以直接获得(无需并行计算并假设您的数学运算正确)?
1001 次
1 回答
2
你可以试试这段代码。这是改编自 Keras 源代码。我自己没有测试过。
class AdamLearningRateTracker(Callback):
def on_epoch_end(self, logs={}):
beta_1 = self.beta_1,
beta_2 = self.beta_2
optimizer = self.model.optimizer
if optimizer.decay > 0:
lr = K.eval(optimizer.lr * (1. / (1. + optimizer.decay * optimizer.iterations)))
t = K.cast(optimizer.iterations, K.floatx()) + 1
lr_t = lr * (K.sqrt(1. - K.pow(beta_2, t)) /(1. - K.pow(beta_1, t)))
print('lr: {:.6f}\n'.format(lr_t))
于 2019-04-11T08:30:06.247 回答