TensorFlow中学习率[通俗易懂]

TensorFlow中学习率[通俗易懂]学习率学习率属于超参数。学习率决定梯度下降速度的快慢,学习率越大,速度越快;学习率越小,速度越慢。如果学习率过大,很可能会越过最优值;反而如果学习率过小,优化的效率可能过低,长时间算法无法收敛。所以学习率对于算法性能的表现至关重要。指数衰减学习率指数衰减学习率是在学习率的基础上增加了动态变化的机制,会随着梯度下降变化而动态变化tf.train.expo…

大家好,又见面了,我是你们的朋友全栈君。

学习

学习率属于超参数。学习率决定梯度下降速度的快慢,学习率越大,速度越快;学习率越小,速度越慢。如果学习率过大,很可能会越过最优值;反而如果学习率过小,优化的效率可能过低,长时间算法无法收敛。所以学习率对于算法性能的表现至关重要。

 

 

 

指数衰减学习率

 

指数衰减学习率是在学习率的基础上增加了动态变化的机制,会随着梯度下降变化而动态变化

 

tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None)

 

  • learn_rate:事先设定的初始学习率
  • global_step:训练轮数
  • decay_steps:衰减速度。staircase=True:代表了完整的使用一遍训练数据所需要的迭代轮数(=总训练样本数/每个batch中的训练样本数)
  • decay_rate:衰减系数
  • staircase:默认为False,此时学习率随迭代轮数的变化是连续的(指数函数);为 True 时,global_step/decay_steps 会转化为整数,此时学习率便是阶梯函数

步骤:

  1. 首先使用较大学习率(目的:为快速得到一个比较优的解);
  2. 然后通过迭代逐步减小学习率(目的:为使模型在训练后期更加稳定);

模板:


global_step = tf.Variable(0)

 

learning_rate = tf.train.exponential_decay(0.1, global_step, 1, 0.96, staircase=True)     #生成学习率

 

learning_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(....., global_step=global_step)  #使用指数衰减学习率

 

实例代码:

TRAINING_STEPS = 100
global_step = tf.Variable(0)
LEARNING_RATE = tf.train.exponential_decay(
    0.1, global_step, 1, 0.96, staircase=True)

x = tf.Variable(tf.constant(5, dtype=tf.float32), name="x")
y = tf.square(x)
train_op = tf.train.GradientDescentOptimizer(LEARNING_RATE).minimize(
    y, global_step=global_step)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for i in range(TRAINING_STEPS):
        sess.run(train_op)
        if i % 10 == 0:
            LEARNING_RATE_value = sess.run(LEARNING_RATE)
            x_value = sess.run(x)
            print("After %s iteration(s): x%s is %f, learning rate is %f." %
                  (i + 1, i + 1, x_value, LEARNING_RATE_value))

 

关于global_step的探究:

  • global_step – 用于衰减计算的全局步骤。 一定不为负数。
  • 喂入一次 BACTH_SIZE 计为一次 global_step
  • 每间隔decay_steps次更新一次learning_rate值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137629.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 利用Pytorch torchvision完成Faster-rcnn目标检测demo及源码详解

    利用Pytorch torchvision完成Faster-rcnn目标检测demo及源码详解Torchvision更新到0.3.0后支持了更多的功能,其中新增模块detection中实现了整个faster-rcnn的功能。本博客主要讲述如何通过torchvision和pytorch使用faster-rcnn,并提供一个demo和对应代码及解析注释。目录如果你不想深入了解原理和训练,只想用Faster-rcnn做目标检测任务的demo,请看这里torchvision中Faste…

    2022年6月24日
    22
  • 芭芭农场自动脚本_农场游戏源码

    芭芭农场自动脚本_农场游戏源码特此声明:此版本校内开心农场外挂由python语言编写,运行平台为linux。本代码是修改网络上流传的源码而成,本人贴出此代码没有任何利益想法,只当学习交流之用,并感谢源码开发者!#!/usr/bin/envpython#encoding:utf-8#2009-8-21升级后importurllib,urllib2,cookielibimporttime,zlib,r

    2022年9月12日
    0
  • request中的方法_request有什么方法

    request中的方法_request有什么方法requestgetRealPath的替代方法

    2022年9月2日
    3
  • 爆炸人游戏各关的道具_盗版星露谷可以联机吗

    爆炸人游戏各关的道具_盗版星露谷可以联机吗1.算法流程2.update函数运行流程updateDelta:Updatedeltaifweneedittocheckrelinearizationlater update.pushBackFactors:Addanynewfactors 为每一个新的factor产生一个索引,把新factor装入nonlinearFactors中 把需要移除的factor从nonlinearFactors和linearFactors中同时移除,把从nonlinea.

    2025年7月17日
    0
  • 缓存雪崩、击穿、穿透,该如何避免?[通俗易懂]

    缓存雪崩、击穿、穿透,该如何避免?

    2022年2月12日
    36
  • SPSS卡方检验结果解读详解

    SPSS卡方检验结果解读详解卡方检验(Chi-SquareTest)是由Pearson提出的一种统计方法,在一定的置信水平和自由度下,通过比较卡方统计量和卡方分布函数概率值,判断实际概率与期望概率是否吻合,通过比较理论概率和实际概率的吻合程度,可检验两个分类变量的相关性。用户可利用SPSS软件方便的完成卡方检验,在SPSS软件中,默认H0成立,即观察频数和实际频数无差别,即两组变量相互不产生影响,两组变量不相关,如果检验P值很高,则假设检验通过;如果检验P值很低,则检验不通过,观察频数和实际频数有差别,两组变量相关。SPSS数据检验

    2022年5月13日
    87

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号