Keras 学习率调整

简介: Keras 学习率调整

Keras提供两种学习率适应方法,可通过回调函数实现。


1. LearningRateScheduler


keras.callbacks.LearningRateScheduler(schedule)


该回调函数是学习率调度器.


参数


schedule:函数,该函数以epoch号为参数(从0算起的整数),返回一个新学习率(浮点数)

代码


import keras.backend as K


from keras.callbacks import LearningRateScheduler



def scheduler(epoch):


   # 每隔100个epoch,学习率减小为原来的1/10


   if epoch % 100 == 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))


   return K.get_value(model.optimizer.lr)



reduce_lr = LearningRateScheduler(scheduler)


model.fit(train_x, train_y, batch_size=32, epochs=300, callbacks=[reduce_lr])


2. ReduceLROnPlateau


keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=10, verbose=0, mode='auto', epsilon=0.0001, cooldown=0, min_lr=0)


当评价指标不在提升时,减少学习率


当学习停滞时,减少2倍或10倍的学习率常常能获得较好的效果。该回调函数检测指标的情况,如果在patience个epoch中看不到模型性能提升,则减少学习率


参数


monitor:被监测的量

factor:每次减少学习率的因子,学习率将以lr = lr*factor的形式被减少

patience:当patience个epoch过去而模型性能不提升时,学习率减少的动作会被触发

mode:‘auto’,‘min’,‘max’之一,在min模式下,如果检测值触发学习率减少。在max模式下,当检测值不再上升则触发学习率减少。

epsilon:阈值,用来确定是否进入检测值的“平原区”

cooldown:学习率减少后,会经过cooldown个epoch才重新进行正常操作

min_lr:学习率的下限

代码


from keras.callbacks import ReduceLROnPlateau

reduce_lr = ReduceLROnPlateau(monitor='val_loss', patience=10, mode='auto')

model.fit(train_x, train_y, batch_size=32, epochs=300, validation_split=0.1, callbacks=[reduce_lr])


目录
相关文章
|
机器学习/深度学习 缓存 监控
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
977 0
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
|
机器学习/深度学习 资源调度 监控
深度学习基础入门篇[六]:模型调优,学习率设置(Warm Up、loss自适应衰减等),batch size调优技巧,基于方差放缩初始化方法。
深度学习基础入门篇[六]:模型调优,学习率设置(Warm Up、loss自适应衰减等),batch size调优技巧,基于方差放缩初始化方法。
|
4月前
|
TensorFlow 算法框架/工具
【Tensorflow+Keras】学习率指数、分段、逆时间、多项式衰减及自定义学习率衰减的完整实例
使用Tensorflow和Keras实现学习率衰减的完整实例,包括指数衰减、分段常数衰减、多项式衰减、逆时间衰减以及如何通过callbacks自定义学习率衰减策略。
66 0
|
7月前
|
机器学习/深度学习 TensorFlow 调度
优化TensorFlow模型:超参数调整与训练技巧
【4月更文挑战第17天】本文探讨了如何优化TensorFlow模型的性能,重点介绍了超参数调整和训练技巧。超参数如学习率、批量大小和层数对模型性能至关重要。文章提到了三种超参数调整策略:网格搜索、随机搜索和贝叶斯优化。此外,还分享了训练技巧,包括学习率调度、早停、数据增强和正则化,这些都有助于防止过拟合并提高模型泛化能力。结合这些方法,可构建更高效、健壮的深度学习模型。
|
7月前
|
机器学习/深度学习 算法 PyTorch
PyTorch使用Tricks:学习率衰减 !!
PyTorch使用Tricks:学习率衰减 !!
170 0
|
数据可视化
探索不同学习率对训练精度和Loss的影响
探索不同学习率对训练精度和Loss的影响
278 0
|
机器学习/深度学习 算法 数据挖掘
Lesson 4.5 梯度下降优化基础:数据归一化与学习率调度-1
Lesson 4.5 梯度下降优化基础:数据归一化与学习率调度-1
|
算法 数据建模 Serverless
Lesson 4.5 梯度下降优化基础:数据归一化与学习率调度-2
Lesson 4.5 梯度下降优化基础:数据归一化与学习率调度-2
|
机器学习/深度学习 异构计算
使用Fastai中的学习率查找器和渐进式调整大小提高训练效率
使用Fastai中的学习率查找器和渐进式调整大小提高训练效率
233 0
使用Fastai中的学习率查找器和渐进式调整大小提高训练效率
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow 神经网络优化:指数衰减学习率、滑动平均、正则化
TensorFlow 神经网络优化:指数衰减学习率、滑动平均、正则化
TensorFlow 神经网络优化:指数衰减学习率、滑动平均、正则化

相关实验场景

更多