自适应训练率优化器



有这样一个函数:

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()不使用自适应学习率。

要创建自适应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()])

最新更新