Keras提供两种学习率调整方法,都是通过回调函数来实现。

  • LearningRateScheduler
  • ReduceLROnPlateau

1. LearningRateScheduler

keras.callbacks.LearningRateScheduler(schedule)

学习速率定时器,也就是说,定的是啥就是啥,严格按照定时器进行更改。

  • schedule: 一个函数,接受epoch作为输入(整数,从 0 开始迭代), 然后返回一个学习速率作为输出(浮点数)。
import keras.backend as K
from keras.callbacks import LearningRateSchedulerdef scheduler(epoch):# 每隔10个epoch,学习率减小为原来的1/10if epoch % 10 == 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)# def poly_decay(epoch):
#     # initialize the maximum number of epochs, base learning rate,
#     # and power of the polynomial
#     maxEpochs = epochs
#     baseLR = learning_rate
#     power = 1.0
#
#     # compute the new learning rate based on polynomial decay
#     alpha = baseLR * (1 - (epoch / float(maxEpochs))) ** power
#
#     return alpha
#
#
# poly_reduce_lr = LearningRateScheduler(poly_decay)reduce_lr = LearningRateScheduler(scheduler)
model.fit(train_x, train_y, batch_size=128, epochs=50, callbacks=[reduce_lr])

2. ReduceLROnPlateau

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

当评估指标停止提升时,降低学习速率。

  • monitor: 被监测的指标。
  • factor: 学习速率被降低的因数。新的学习速率 = 学习速率 * 因数
  • patience: 没有提升的训练轮数,在这之后训练速率会被降低。
  • verbose: 整数。0:安静,1:更新信息。
  • mode: {auto, min, max} 其中之一。如果是 min 模式,学习速率会被降低如果被监测的数据已经停止下降; 在 max 模式,学习塑料会被降低如果被监测的数据已经停止上升; 在 auto 模式,方向会被从被监测的数据中自动推断出来。
  • min_delta: 阈值,用来确定是否进入检测值的“平原区”
  • cooldown: 在学习速率被降低之后,重新恢复正常操作之前等待的训练轮数量。
  • min_lr: 学习速率的下边界。
from keras.callbacks import ReduceLROnPlateaureduce_lr = ReduceLROnPlateau(monitor='val_loss', patience=10, mode='min')
model.fit(train_x, train_y, batch_size=128, epochs=50, validation_split=0.1, callbacks=[reduce_lr])

keras进阶之poly学习率相关推荐

  1. Java 11 – ChaCha20-Poly1305加密示例

    本文向您展示如何使用RFC 7539中定义的ChaCha20-Poly1305算法对消息进行加密和解密. PS ChaCha20-Poly1305加密算法可从Java 11获得. 1.常见问题 一些常 ...

  2. “让Keras更酷一些!”:分层的学习率和自由的梯度

    作者丨苏剑林 单位丨广州火焰信息科技有限公司 研究方向丨NLP,神经网络 个人主页丨kexue.fm 高举"让 Keras 更酷一些!"大旗,让 Keras 无限可能. 今天我们会 ...

  3. 机器学习(七)——tf.keras搭建神经网络固定模式

    一.总纲(一般按照下面6步搭建) import--导入相关模块 train,test--指定训练集与测试集 model = tf.keras.models.Sequential--在Sequentia ...

  4. 【DL】——Warmup学习率调整策略

    1. warmup的必要性 原理这部分转载自: 神经网络中 warmup 策略为什么有效:有什么理论解释么? 那么在什么时候可能不成立呢?论文[3]告诉我们有两种情况: 在训练的开始阶段,模型权重迅速 ...

  5. 【学习率】梯度下降学习率的设定策略

    转载 卢明冬 参考 学习率和batchsize如何影响模型的性能? - yumoye - 博客园 学会使用顶级算法的秘诀是什么?如何找到合适的学习率?-电子发烧友网 深度学习论文 - Cyclical ...

  6. tensorflow.keras入门1

    tensorflow.keras入门1-基本函数介绍 目前keras API 已经整合到 tensorflow中,在tensorflow中通过tf.keras就可以调用keras. import te ...

  7. 【调参15】如何配置神经网络的学习率

    文章目录 1. 什么是学习率 2. 学习率的影响 3. 如何设置学习率 4. 为学习过程添加动量(Momentum) 5. 使用学习率时间表(LR Schedule) 6. 自适应学习率(Adapti ...

  8. tensorflow学习笔记keras(5)------北京大学 曹健

    tf.keras搭建网络八股 1. import import tensorflow as tf from sklearn import datasets import numpy as np 2. ...

  9. DANet(双重注意力融合网络)与CBAM

    原文地址:Dual Attention Network for Scene Segmentation 源代码pytorch:https://github.com/junfu1115/DANet/ 复现 ...

最新文章

  1. JAVA并发之多线程基础(2)
  2. matlab 0000,部分结果出现虚数单位 0.0000i
  3. 兰华峰:商业模式驱动企业参与MSU评测
  4. linux抓包提示没有权限,linux下wireshark不用sudo权限抓包包
  5. matlab提取图像中的一部分并移动,在Matlab中从图像中提取对象
  6. android钱包nfc功能,Android NFC(二)M1卡电子钱包功能
  7. 电阻参数_贴片电阻的参数标识与贴片电阻的选择
  8. 合成资产平台Public Mint与跨链资产协议Knit Finance达成合作
  9. multipart form-data boundary 说明
  10. 离线提取目标机hash
  11. android:windowSoftInputMode属性;界面关闭后软键盘不隐藏的解决方法;
  12. CDA二级建模分析师考试相关
  13. VS2008中关于“加载安装组件时遇到问题。取消安装”的解决办法
  14. Arduino与SG90舵机握手
  15. 小白如何做一个Python人工智能语音助手
  16. VC++ 判断打印机状态
  17. 20160218.CCPP体系详解(0028天)
  18. 【软件工具】之 TotalCommander
  19. 【EMGU CV】油管一个视频合集学习笔记
  20. 8.19华为笔试题目c++

热门文章

  1. 第三章:晶体三极管及应用电路
  2. 【salesforce】aura子组件怎么向父组件传递消息
  3. 一种基于深度学习的目标检测提取视频图像关键帧的方法
  4. C语言十进制转八进制
  5. 想搞机器学习,不会特征工程?你TM逗我那!
  6. android期末课设选题_基于本科计算机安卓android毕业设计选题题目
  7. 贪心算法 003:Tian Ji -- The Horse Racing
  8. 计算机工程师自荐信英语作文,IT工程师英文自荐信
  9. 蓝桥杯备赛笔记-规律题
  10. Oracle connect by与level的使用