由于標題是自我描述的,我正在尋找一種方法來重置learning rate (lr)每個折疊。的ReduceLROnPlateau回呼Keras管理lr.
uj5u.com熱心網友回復:
沒有可重復的例子,我只能提出建議。如果您查看ReduceLROnPlateau的源代碼,您可以獲得一些靈感并創建自定義回呼以在訓練開始時重置學習率:
class ResetLR(tf.keras.callbacks.Callback):
def on_train_begin(self, logs={}):
default_lr = 0.1
previous_lr = self.model.optimizer.lr.read_value()
if previous_lr!=defaul_lr:
print("Resetting learning rate from {} to {}".format(previous_lr, default_lr))
self.model.optimizer.lr.assign(default_lr)
因此,通過此回呼,您可以使用 for 回圈進行訓練:
custom_callback = ResetLR()
for fold in folds:
model.fit(...., callbacks=[custom_callback])
如果這不起作用(由于 tensorflow 版本),您可以嘗試使用以下方法分配默認學習率tf.keras.backend:
class ResetLR(tf.keras.callbacks.Callback):
def on_train_begin(self, logs={}):
default_lr = 0.1
previous_lr = float(tf.keras.backend.get_value(self.model.optimizer.lr))
if previous_lr!=default_lr:
print("Resetting learning rate from {} to {}".format(previous_lr, default_lr))
tf.keras.backend.set_value(self.model.optimizer.lr, default_lr)
另外我建議看看這篇文章,以獲得更多參考。
uj5u.com熱心網友回復:
下面是一個可以完成這項作業的自定義回呼。在訓練開始時,回呼提示用戶輸入初始學習率的值。
class INIT_LR(keras.callbacks.Callback):
def __init__ (self, model): # initialization of the callback
super(INIT_LR, self).__init__()
self.model=model
def on_train_begin(self, logs=None): # this runs on the beginning of training
print('Enter initial learning rate below')
lr=input('')
tf.keras.backend.set_value(self.model.optimizer.lr, float(lr)) # set the learning rate in the optimizer
lr=float(tf.keras.backend.get_value(self.model.optimizer.lr)) # get the current learning rate to insure it is set
print('Optimizer learning rate set to ', lr)
在 model.fit 中設定引數
callbacks = [INIT_LR(model), rlronp]
注意:model 是你編譯模型的名字,rlronp 是你的 ReduceLROnPlateau 回呼的名字。當您運行 model.fit 時,系統會提示您
Enter initial learning rate below # printed by the callback
.001 # user entered initial learning rate
Optimizer learning rate set to 0.0010000000474974513 # printed by the callback
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/489706.html
標籤:张量流 喀拉斯 深度学习 张量流2.0 tf.keras
上一篇:使用ImageDataGenerator和flow_from_directory時如何使用來自TensorHub的遷移學習和自定義影像大小
