TensorFlow在model.fit自定义学习率变化

该文段展示了一个使用TensorflowKeras的自定义学习率调度器。模型训练过程中,学习率会在每个epoch的特定时刻调整:每过20个epoch减半,每隔1个epoch减至原来的1/10。模型使用了Adam优化器,初始学习率为3e-5,并在训练时应用了这个学习率调度器来改进优化过程。
摘要由CSDN通过智能技术生成
import tensorflow.keras.backend as K
# 自定义学习率的变化
def scheduler(epoch):
    # 每隔1个epoch,学习率减小为原来的1/10
    # if epoch % 1 == 0 and epoch != 0:
    #     lr = K.get_value(model.optimizer.lr)
    #     K.set_value(model.optimizer.lr, lr * 0.1)
    #     print("lr changed to {}".format(lr * 0.1))
    if epoch % 20 == 19 and epoch != 0:             # 每测试20轮,学习率降低一半
        lr = K.get_value(model.optimizer.lr)
        K.set_value(model.optimizer.lr, lr * 0.5)
        print("lr changed to {}".format(lr * 0.5))
    return K.get_value(model.optimizer.lr)

model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.summary()
model.compile(optimizer=tf.keras.optimizers.Adam(lr=3e-5, beta_1=0.5, beta_2=0.99),
              loss=v_loss,
              metrics='accuracy')
# 自定义学习率
reduce_lr = LearningRateScheduler(scheduler)
# reduce_lr = tf.keras.callbacks.ReduceLROnPlateau(monitor='val_loss', patience=50, mode='auto')
history = model.fit(x_train, y_train,
                    batch_size=1024,
                    epochs=800,
                    initial_epoch=1,
                    validation_data=(x_test, y_test),
                    callbacks=[reduce_lr])
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值