首页 > 解决方案 > 自适应训练率优化器.minimize

问题描述

有这样的功能:

for i in range(0,200):
    train = opt.minimize(loss, var_list=[tf_weights])
    print(loss().numpy())
    current_learning_rate = opt._decayed_lr(tf.float32)
    print(current_learning_rate)

损失函数不是分类问题。我需要覆盖 model.fit() 还是有更简单的方法来实现自适应学习率。我猜想, opt.minimize() 不使用自适应学习率。

标签: pythontensorflow

解决方案


要创建自适应 learning_rate,您可以在 tensorflow 中使用自定义回调。

举个例子:

def CustomCallback(tf.keras.callvacks.Callback):
    on_epoch_end(self,logs=None):
       lr=float(tf.keras.backend.get_value(self.model.optimizer.learning_rate))
       decay_rate=0.5
       new_lr=self.schedule(epoch,lr)*decay_rate
       tf.keras.backend.set_value(self.model.optimizer.lr,new_lr)
       print("Epoch:{},Current lr:{}".format(epoch,new_lr))

...

创建模型后:

model.fit(...,callbacks=[CustomCallback()])

推荐阅读