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/ 复现 ...
最新文章
- STM32程序设计心得以及易错点
- [转载]无需软件合并多个TS流文件
- mailmessage html编码,C#MailMessage顯示HTML標記的AlternateViews
- redhat6.5 yum register 问题
- DNS support edns-client-subnet
- 在linux下dns绑定域名,在Linux系统中,使用Bind搭建DNS域名解析服务
- 华为Mate 20 X(5G)评测:6199元的5G双模旗舰手机
- 拓端tecdat|python隶属关系图模型:基于模型的网络中密集重叠社区检测方法
- 给所有使用FMX(FireMonkey)进行开发的忠告!
- GIMP为证件照更换背景颜色
- 对当前计算机应用的理解论文,计算机应用的现状、主要对策及今后发展方向
- .equal(String)与Stirng.equal()的区别
- 【系统运维-raid5】HW5885V3下挂4块2T硬盘如何做RAID5
- Shell 脚本正则表达式(一)
- notify()和notifyAll()有什么区别
- erlang 单元测试
- WebView加载Html片段监听滑动到底部
- 智能汽车时代,“BATH”的跨界姿势与逻辑
- 津津的储蓄计划python_津津的储蓄计划 c++
- 万能Makefile