【TensorFlow】TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法)
本文是《TensorFlow从浅入深》系列之第1篇
【TensorFlow】TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法)
在训练神经网络时,需要设置学习率(learning rate)控制参数更新的速度 。学习率决定了参数每次更新的幅度 。如果幅度过大,
那么可能导致参数在极优值的两侧来回移动。如优化 函数,在优化中使用的学习率为1,则整个优化过程表4-1所示:
从表格可以看出,无论进行多少轮法代,参数将在 5 和,5 之间摇摆,而不会收敛到一个极小值 。
相反,当学习率过小时,虽然能保证收敛性,但是这会大大降低优化速度 。我们会需要更多轮的法代才能达到一个比较理想的优化效果 。
所以学习率既不能过大,也不能过小 。为了解决设定学习率的问题, TensorFlow提供了 一种更加灵活的学习率设置方法一一指数衰减法。
tf.train.exponential_decay函数实现了指数衰减学习率。通过这个函数,可以先使用较大的学习率来快速得到一个比较优的解,然后随着迭代的继续逐步减小学习率,使得模型在训练后期更加稳定。 exponential_decay 函数会指数级地减小学习率,它实现了以下代码的功能:
其中 :
- decayed_learning_rate 为每一轮优化时使用的学习率 ;
- learning_rate 为事先设定的初始学习率;
- decay_rate 为衰减系数;
- decay_steps 为衰减速度 。decay_steps 通常代表了完整的使用一遍训练数据所需要的迭代轮数。这个迭代轮数也就是总训练样本数除以每一个 batch 中的训练样本数 。
tf.train.exponential_decay函数可以通过设置参数staircase选择不同的衰减方式。staircase的默认值为False,这时学习率随法代轮数变化的趋势如4-13图灰色曲线所示(连续衰减)。当staircase 的值被设置为True 时,global_stepIdecay_steps会被转化成整数。这使得学习率成为一个阶梯函数(staircase function )。4-13图中黑色曲线显示了阶梯状的学习率。(这种设置的常用场景是每完整地过完一遍训练数据,学习率就减小一次。这可以使得训练数据集中的所有数据对模型训练有相等的作用。当使用连续的指数衰减学习率时,不同的训练数据有不同的学习率,而当学习率减小时,对应的训练数据对模型训练结果的影响也就小了。)
TensorFlow中使用tf.train.exponential_decay实现指数衰减率。
tf.train.exponential_decay格式:
tf.train.exponential_decay(learning_rate, global_, decay_steps, decay_rate, staircase=True/False)
参数说明:
- learning_rate:初始学习率
- global_step:当前迭代次数
- decay_steps:衰减速度
- decay_rate:衰减系数,通常介于0-1之间。
- staircase=False:衰减方式,(默认值为False,当为True时,(global_step/decay_steps)则被转化为整数) 式。
一段代码来示范如何在 TensorFlow 中使用 tf.train .exponential_decay函数 。
上面这段代码中设定了初始学习率为 0.1 ,因为指定了 staircase=True,所以每训练100轮后学习率乘以 0.96 。
【TensorFlow】TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法)相关推荐
- 【TensorFlow】TensorFlow从浅入深系列之八 -- 教你学会变量管理
本文是<TensorFlow从浅入深>系列之第8篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...
- 【TensorFlow】TensorFlow从浅入深系列之七 -- 教你使用验证数据集判断模型效果
本文是<TensorFlow从浅入深>系列之第7篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...
- 【TensorFlow】TensorFlow从浅入深系列之六 -- 教你深入理解经典损失函数(交叉熵、均方误差)
本文是<TensorFlow从浅入深>系列之第6篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...
- 【TensorFlow】TensorFlow从浅入深系列之五 -- 教你详解滑动平均模型
本文是<TensorFlow从浅入深>系列之第5篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...
- 【TensorFlow】TensorFlow从浅入深系列之四 -- 教你深入理解过拟合问题(正则化)
本文是<TensorFlow从浅入深>系列之第4篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...
- 【TensorFlow】TensorFlow从浅入深系列之三 -- 教你如何对MNIST手写识别
本文是<TensorFlow从浅入深>系列之第3篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...
- 【TensorFlow】TensorFlow从浅入深系列之十三 -- 教你深入理解模型持久化(模型保存、模型加载)
本文是<TensorFlow从浅入深>系列之第13篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维 ...
- 【TensorFlow】TensorFlow从浅入深系列之十二 -- 教你深入理解卷积神经网络中的池化层
本文是<TensorFlow从浅入深>系列之第12篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维 ...
- 【TensorFlow】TensorFlow从浅入深系列之十一 -- 教你深入理解卷积神经网络中的卷积层
本文是<TensorFlow从浅入深>系列之第11篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维 ...
最新文章
- java-mybaits-00101-基础安装配制
- decode函数_decode函数的妙用网友的两个问题解答
- 计算机信息管理和计算机及应用,计算机信息管理及应用浅析
- MyBatis(四)MyBatis插件原理
- Python time.time()方法
- 清华源离线安装pytorch_【Pytorch】pytorch安装的时候下载不动
- 国内现在web前端高手薪资都拿多少?
- Shell.ItemTemplate
- Exchange 2010 迁移至Exchange 2013系列之六:创建信任关系并安装ADMT Server
- 值-结果参数(socket编程中的函数举例)
- 计算机多媒体处理的是什么意思,多媒体处理的是什么信号
- LabView制作登录界面
- yylabel 加载html,YYLabel的富文本设置
- 石头剪刀布程序流程图_民间传统体育游戏 | 石头剪刀布
- db_recovery_file_dest与log_archive_dest、log_archive_dest_n
- 1000句英语经典口语(3)
- 武汉大学计算机学院樊浩南,今年高考光荣榜?谁能告之??谢谢!!
- Android2.3触摸屏功能详解
- 创新实训(46)——基于ElasticSearch的Completion Suggest实现搜索提示
- 重型音乐金属核后期分轨混音教程教学培训(基础+进阶+重型音色调音指南+剪辑+修音+美感设计+实战+母带处理)|MZD Studios
热门文章
- 3dvary灯光材质为什么不亮_关机后电脑灯光闪瞎狗眼?在这里关闭它
- 计算机老师任课教师寄语,任课老师寄语大全
- 计算机辅助功能包括什么,CAD软件是什么?有什么功能?
- clone git 要输入yes_GitHub,git与python连接使用
- 什么人不在生死簿_地府在孙悟空划掉生死簿以后,因为什么原因不组织重写?...
- 比特币全节点(bitcoind) eth 全节点
- 位运算之二进制中1的个数
- Java第二次作业第一题
- Arduino 002 --- 在Ubuntu(Linux) 中搭建Arduino开发环境
- 配置Servlet3.0的方式和注意事项!