keras定期调整学习率
2019-07-18 本文已影响0人
你说你要一场
keras可以import两个函数
定义一个函数
进而实现动态调整学习率。
并且fit里的callbacks中的学习率会覆盖掉complie里的学习率。
还有,def scheduler(epoch):里的model要是里接下来要引用的model,当有多个model或者model被重新命名是需要注意这一点。
下面是代码:
import keras.backend as K
from keras.callbacks import LearningRateScheduler
def scheduler(epoch):
if epoch<1000:
# lr=K.get_value(model2.optimizer.lr)
K.set_value(model2.optimizer.lr, 0.00001)
return K.get_value(model2.optimizer.lr)
else:
K.set_value(model2.optimizer.lr, 0.0000001)
return K.get_value(model2.optimizer.lr)
reduce_lr = LearningRateScheduler(scheduler)
model2 = Sequential()
model2.add(Dense(units=1,kernel_initializer="ones",bias_initializer=initializers.Constant(value=-0.01),kernel_constraint=unit_norm(),input_dim=1))
model2.compile(optimizer=Adam(lr=0.0000001),loss='mse')
history = model2.fit(test_in,test_out,epochs=2000,verbose=1,callbacks=[reduce_lr])
下图是加不加callbacks的对比:
不加callbacks
加callbacks 不加callbacks
加callbacks