TensorFlow入门(二十三、退化学习率)
学习率
学习率,控制着模型的学习进度。模型训练过程中,如果学习率的值设置得比较大,训练速度会提升,但训练结果的精度不够,损失值容易爆炸;如果学习率的值设置得比较小,精度得到了提升,但训练过程会耗费太多的时间,收敛速度慢,同时也容易出现过拟合的情况。
退化学习率
退化学习率又叫学习率衰减或学习率更新。更新学习率是希望训练过程中,在精度和速度之间找到一个平衡,兼得学习率大核学习率小的优点。即当训练刚开始时使用大的学习率加快速度,训练到一定程度后使用小的学习率来提高精度。
TensorFlow中常用的退化学习率方法
①指数衰减方法
指数衰减是较为常用的衰减方法,学习率是跟当前的训练轮次指数相关的。
tf.train.exponential_decay(learning_rate,global_step,decay_steps,decay_rate,staircase = False,name = None)
参数learning_rate为初始学习率;global_step为当前训练轮次,即epoch;decay_steps用于定义衰减周期,跟参数staircese配合,可以在decay_step个训练轮次内保持学习率不变;decay_rate为衰减率系数;staircase用于定义是阶梯型衰减,还是连续衰减,默认是False,即连续衰减(标准的指数型衰减)。
指数衰减方法中学习率的具体计算公式如下:
decayed_learning_rate = learning_rate*decay_rate^(global_step/decay_steps)
指数衰减方法中学习率的衰减轨迹如下图:

红色的是阶梯型指数衰减,在一定轮次内学习率保持一致
绿色的是标准的指数衰减,即连续型指数衰减
②自然指数衰减方法
指数衰减的一种特殊情况,学习率也是跟当前的训练轮次指数相关,只不过是以e为底数。函数中的参数意义与指数衰减方法中的参数相同。
tf.train.natural_exp_decay(learning_rate,global_step,decay_steps,decay_rate,staircase = False,name = None)
自然指数衰减方法中的学习率的具体计算公式如下:
decayed_learning_rate = learning_rate*exp(-decay_rate*global_step)
自然指数衰减方法中学习率的衰减轨迹如下图:

左下部分的两条曲线是自然指数衰减,右上部分的两条曲线是指数衰减。可以明显看到,自然指数衰减对学习率的衰减程度要远大于一般的指数衰减,它一般用于可以较快收敛的网络,或者是训练数据集比较大的场合。
③倒数衰减方法
训练过程中,倒数衰减方法不固定最小学习率,迭代次数越多,学习率越小。学习率的大小跟训练次数有一定的反比关系。
tf.train.inverse_time_decay(learning_rate,global_step,decay_steps,decay_rate,staircase = False,name = None)
参数global_step为用于衰减计算的全局步数,decay_steps为衰减步数,decay_rate为衰减率,staircase用于定义是应用离散阶梯型衰减,还是连续衰减。
倒数衰减方法中学习率的具体计算公式如下:
decayed_learning_rate = learning_rate/(1+decay_rate*global_step/decay_step)
倒数衰减方法中学习率的衰减轨迹如下图:

绿色的是离散阶梯型衰减,红色的是连续型衰减
④分段常数衰减方法
分段常数衰减可以针对不同任务设置不同的学习率,从而进行精细调参。
tf.train.piecewise_constant(x,boundaries,values,name = None)
参数x是标量,指的是global_step,即训练次数;boundaries为学习率参数应用区间列表,即迭代次数所在的区间;values为学习率列表,存放在不同区间该使用的学习率的值。需要注意 : values的长度比boundaries的长度多1,因为两个数可以制定出三个区间,有三个区间要用3个学习率。
分段常数衰减方法中学习率的衰减轨迹如下图:

每个区间内,学习率的值是不一样的
⑤多项式衰减方法
多项式衰减方法的原理为 : 定义一个初始的学习率和一个最低的学习率,然后按照设置的衰减规则,学习率从初始学习率逐渐降低到最低的学习率,并且可以定义学习率降低到最低的值之后,是一直保持使用这个最低的学习率,还是再升高到一定的值,然后再降低到最低的学习率,循环反复这个过程。
tf.train.polynomial_decay(learning_rate,global_step,decay_steps,end_learning_rate = 0.0001,power = 1.0,cycle = False,name = None)
参数global_step为当前训练轮次,即epoch;decay_steps为定义衰减周期;end_learning_rate是最小的学习率,默认值是0.0001;power是多项式的幂,默认值是1,即线性的。cycle用于定义学习率是否到达最低学习率后升高,然后再降低,默认False,保持最低的学习率。
一般情况下多项式衰减方法中学习率的具体计算公式如下:
global_step = min(global_step,decay_steps)
decayed_learning_rate = (learning_rate - end_learning_rate) * (1 - global_step / decay_steps)^(power) + end_learning_rate
如果定义cycle为True,学习率在到达最低学习率后反复升高降低,学习率计算公式如下:
decay_steps = decay_steps * ceil(global_step / decay_steps)
decayed_learning_rate = (learning_rate - end_learning_rate) * (1 - global_step / decay_steps)^(power) + end_learning_rate
多项式衰减方法中学习率的衰减轨迹如下图:

红色的为cycle = False时的情况,下降后不再上升,保持不变;绿色的为cycle = True时的情况,下降后反复升降。
多项式衰减中设置学习率反复升降的目的是为了防止神经网络后期训练的学习率过小,导致网络参数陷入某个局部,找不到最优解;设置学习率升高机制,有可能使网络找出局部最优解。
指数衰减示例代码如下:
import tensorflow.compat.v1 as tf
tf.compat.v1.disable_v2_behavior()global_step = tf.Variable(0,trainable=False)
#定义初始学习率
initial_learning_rate = 0.1
#使用指数衰减方法
learning_rate = tf.train.exponential_decay(initial_learning_rate,global_step,decay_steps = 20,decay_rate = 0.8)#定义一个操作,global_step每次加1后完成计步
opt = tf.train.GradientDescentOptimizer(learning_rate)
add_global = global_step.assign_add(1)init = tf.global_variables_initializer()
with tf.Session() as sess:sess.run(init)print(sess.run(learning_rate))#循环20次,将每次的学习率打印出来for i in range(20):g,rate = sess.run([add_global,learning_rate])print(g,rate)

相关文章:
TensorFlow入门(二十三、退化学习率)
学习率 学习率,控制着模型的学习进度。模型训练过程中,如果学习率的值设置得比较大,训练速度会提升,但训练结果的精度不够,损失值容易爆炸;如果学习率的值设置得比较小,精度得到了提升,但训练过程会耗费太多的时间,收敛速度慢,同时也容易出现过拟合的情况。 退化学习率 退化学…...
登录中获取验证码的节流
一. 验证码框 <el-input placeholder"请输入验证码" prefix-icon"el-icon-lock" v-model"ruleForm.code"><el-button slot"suffix" :disabled"disabled" type"text" size"mini" click"ch…...
spring boot 实现Minio分片上传
应用场景 分片上传,就是将所要上传的文件,按照一定的大小,将整个文件分隔成多个数据块(我们称之为Part)来进行分别上传,上传完之后再由服务端对所有上传的文件进行汇总整合成原始的文件。 分片上传的场景…...
2023年09月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
C/C编程(1~8级)全部真题・点这里 Python编程(1~6级)全部真题・点这里 第1题:生日相同 在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的名字,出生月日。试…...
docker-compose 部署示例
文章目录 docker-compose文件格式docker-compose 下载 docker-compose文件格式 这个软件的实际很小,只是根据配置文件产生一些docker命令来执行可以。 配置文件本身是yml的格式,如下 version: 3.5services:# Etherpad: real-time collaborative docume…...
新版WordPress插件短视频去水印小程序源码
最新版去水印小程序源码,本版本全开源,是WordPress插件 上传到Wordpress 安装插件 启动之后 绑定自己的小程序id wordpress可以在宝塔一键部署 也可以用我的这个 搭建前我们需要一下东西: 第一个:一台服务器(国内外都可…...
如何提高MES系统的落地成功率?
导 读 ( 文/ 2768 ) 制造执行系统(MES)在现代制造业中扮演着至关重要的角色,但实施MES系统并取得成功并非易事。为了帮助企业提高MES系统的落地成功率,本文将介绍关键的方法和策略。通过深入了解业务需求、有效的团队合作、全面的…...
private key ssh连接服务器
这里用到的软件是PuTTY。 https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 保存本地rsa文件后,打开软件PuTTYgen,点击Load导入文件,输入Key passphrase即密码,保存至本地。 随后在PuTTY配置ssh的用户名 来Cred…...
PDF-Word-图片等的互相转换
轻闪PDF客户端 - 功能强大的一站式PDF工具 | PDF编辑、转换、阅读 上面页面支持PDF转换成各类别:鼠标停留在PDF工具,点击转换类型即可在线转换 Word-PDF:word文档打开word文件中,点击文件->另存为->另存为的位置->保存…...
【VR开发】【Unity】0-课程简介和概述
【说明】 这是我录制的一套VR基础开发课程的文字版本,更加便于快速参考。 应大家在后台所提的需求,从今天开始,我计划带给大家一套完整达40课时的VR开发基础课程。 在开始学习前需要注意如下几点: 本教程基于Unity2022.2.1f1版…...
Java面试题-Java核心基础-第三天(基本数据类型)
目录 一、Java的基本数据类型了解吗? 二、基本类型和包装类型的区别 三、包装类型的缓存机制了解吗? 四、自动拆箱和自动装箱了解吗? 五、为什么浮点数在运算的时候会有精度损失的风险? 六、如何解决浮点数在运算时存在的精度…...
Bean容器里的单例是根据什么识别它是同一个类呢?(比如容器里创建了A类,再去用这个A类的时候,Bean容器怎么知道这个就是A类?)
Spring容器中的Bean的识别主要依赖于Bean的名称(ID)和类型。以下是详细解释: Bean的名称(ID):每个Bean在Spring容器中都必须有一个唯一的名称(ID)。这个名称通常在配置文件中、Java…...
简述 happens - before 八大规则
“Happens-Before” 是Java内存模型中的概念,用于描述多线程程序中操作之间的顺序和可见性关系。它定义了一组规则,哪些操作具有可预测的行为。以下是"Happens-Before" 的八大规则: 程序顺序规则(Program Order Rule&am…...
windows flask 多进程高并发
最近在做的一个项目,需要将十几个python函数封装程flask服务供外界调用,每个函数之间没有什么关系,相互独立。虽然感觉不是很难,但因为用的windows系统,遇到的坑比较多,在此一一总结一下。 flask偶尔出现卡…...
【设计模式】十、组合模式
文章目录 案例组合模式基本介绍类图代码 组合模式在 JDK 集合的源码分析组合模式的注意事项和细节 案例 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。如…...
React知识点系列(8)-每天10个小知识
目录 1. 在 React 中,什么是受控组件和非受控组件?请解释一下它们之间的区别和适用场景。2. 如何使用 React 的 useReducer Hook 来管理组件状态?请描述一下 useReducer 的工作原理和适用场景。工作原理:适用场景: 3. …...
rust注释
一、普通注释 // 这是第一种注释方式/* 这是第二种注释方式 */ /* 多行注释 多行注释 多行注释*/二、文档注释 ///外部行文档注释。为接下来的项生成帮助文档 //! 内部行文档注释。为注释所属于的项生成帮助文档/**...*/外部块文档注释。为接下来的项生成帮助文档 /*!...*/内…...
【Java学习之道】GUI开发的基本概念
引言 在这一章,我们将一起走进Java的图形用户界面(GUI)开发的世界。在你阅读完这篇文章后,你将能够了解什么是GUI,以及如何使用Java进行GUI的开发。 一、什么是GUI 首先,让我们来解答一个许多初学者都会…...
Docker部署gitlab_ce(避坑版---社区版)
1 下载docker 2 下载gitlab镜像 3 运行 4 进入容器内部修改 5 在浏览器里访问 6 修改root密码(如果忘记请修改) 1 下载docker # 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2# 设置yum源 yum-config-manager --add-repo https…...
数据仓库DW-理论知识储备
数据仓库DW 数据仓库具备 采集数据、分析数据、存储数据的功能,最后得出一些有用的数据,一些目标数据来使用。 采集来自不同源的数据,然后对这些数据进行分析和计算得出一些有用的指标,提供数据决策支持。 数据的来源有ÿ…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
