keras进阶之poly学习率
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学习率相关推荐
- Java 11 – ChaCha20-Poly1305加密示例
本文向您展示如何使用RFC 7539中定义的ChaCha20-Poly1305算法对消息进行加密和解密. PS ChaCha20-Poly1305加密算法可从Java 11获得. 1.常见问题 一些常 ...
- “让Keras更酷一些!”:分层的学习率和自由的梯度
作者丨苏剑林 单位丨广州火焰信息科技有限公司 研究方向丨NLP,神经网络 个人主页丨kexue.fm 高举"让 Keras 更酷一些!"大旗,让 Keras 无限可能. 今天我们会 ...
- 机器学习(七)——tf.keras搭建神经网络固定模式
一.总纲(一般按照下面6步搭建) import--导入相关模块 train,test--指定训练集与测试集 model = tf.keras.models.Sequential--在Sequentia ...
- 【DL】——Warmup学习率调整策略
1. warmup的必要性 原理这部分转载自: 神经网络中 warmup 策略为什么有效:有什么理论解释么? 那么在什么时候可能不成立呢?论文[3]告诉我们有两种情况: 在训练的开始阶段,模型权重迅速 ...
- 【学习率】梯度下降学习率的设定策略
转载 卢明冬 参考 学习率和batchsize如何影响模型的性能? - yumoye - 博客园 学会使用顶级算法的秘诀是什么?如何找到合适的学习率?-电子发烧友网 深度学习论文 - Cyclical ...
- tensorflow.keras入门1
tensorflow.keras入门1-基本函数介绍 目前keras API 已经整合到 tensorflow中,在tensorflow中通过tf.keras就可以调用keras. import te ...
- 【调参15】如何配置神经网络的学习率
文章目录 1. 什么是学习率 2. 学习率的影响 3. 如何设置学习率 4. 为学习过程添加动量(Momentum) 5. 使用学习率时间表(LR Schedule) 6. 自适应学习率(Adapti ...
- tensorflow学习笔记keras(5)------北京大学 曹健
tf.keras搭建网络八股 1. import import tensorflow as tf from sklearn import datasets import numpy as np 2. ...
- DANet(双重注意力融合网络)与CBAM
原文地址:Dual Attention Network for Scene Segmentation 源代码pytorch:https://github.com/junfu1115/DANet/ 复现 ...
最新文章
- JAVA并发之多线程基础(2)
- matlab 0000,部分结果出现虚数单位 0.0000i
- 兰华峰:商业模式驱动企业参与MSU评测
- linux抓包提示没有权限,linux下wireshark不用sudo权限抓包包
- matlab提取图像中的一部分并移动,在Matlab中从图像中提取对象
- android钱包nfc功能,Android NFC(二)M1卡电子钱包功能
- 电阻参数_贴片电阻的参数标识与贴片电阻的选择
- 合成资产平台Public Mint与跨链资产协议Knit Finance达成合作
- multipart form-data boundary 说明
- 离线提取目标机hash
- android:windowSoftInputMode属性;界面关闭后软键盘不隐藏的解决方法;
- CDA二级建模分析师考试相关
- VS2008中关于“加载安装组件时遇到问题。取消安装”的解决办法
- Arduino与SG90舵机握手
- 小白如何做一个Python人工智能语音助手
- VC++ 判断打印机状态
- 20160218.CCPP体系详解(0028天)
- 【软件工具】之 TotalCommander
- 【EMGU CV】油管一个视频合集学习笔记
- 8.19华为笔试题目c++