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
上一篇下一篇

猜你喜欢

热点阅读