ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TensorFlow优化器及用法

2021-01-30 09:01:41  阅读:199  来源: 互联网

标签:学习 函数 梯度 用法 器及 TensorFlow 优化 衰减


TensorFlow优化器及用法

函数在一阶导数为零的地方达到其最大值和最小值。梯度下降算法基于相同的原理,即调整系数(权重和偏置)使损失函数的梯度下降。
在回归中,使用梯度下降来优化损失函数并获得系数。本文将介绍如何使用 TensorFlow 的梯度下降优化器及其变体。
按照损失函数的负梯度成比例地对系数(W 和 b)进行更新。根据训练样本的大小,有三种梯度下降的变体:

  1. Vanilla 梯度下降:在 Vanilla 梯度下降(也称作批梯度下降)中,在每个循环中计算整个训练集的损失函数的梯度。该方法可能很慢并且难以处理非常大的数据集。该方法能保证收敛到凸损失函数的全局最小值,但对于非凸损失函数可能会稳定在局部极小值处。
  2. 随机梯度下降:在随机梯度下降中,一次提供一个训练样本用于更新权重和偏置,从而使损失函数的梯度减小,然后再转向下一个训练样本。整个过程重复了若干个循环。由于每次更新一次,所以它比 Vanilla 快,但由于频繁更新,所以损失函数值的方差会比较大。
  3. 小批量梯度下降:该方法结合了前两者的优点,利用一批训练样本来更新参数。

TensorFlow优化器的使用

首先确定想用的优化器。TensorFlow提供了各种各样的优化器:

  • 这里从最流行、最简单的梯度下降优化器开始:

    GradientDescentOptimizer 中的 learning_rate 参数可以是一个常数或张量。它的值介于 0 和 1 之间。
    必须为优化器给定要优化的函数。使用它的方法实现最小化。该方法计算梯度并将梯度应用于系数的学习。该函数在 TensorFlow 文档中的定义如下:
    综上所述,这里定义计算图:


    馈送给 feed_dict 的 X 和 Y 数据可以是 X 和 Y 个点(随机梯度)、整个训练集(Vanilla)或成批次的。
  • 梯度下降中的另一个变化是增加了动量项。为此,使用优化器 tf.train.MomentumOptimizer()。它可以把 learning_rate 和 momentum 作为初始化参数:

  • 可以使用 tf.train.AdadeltaOptimizer() 来实现一个自适应的、单调递减的学习率,它使用两个初始化参数 learning_rate 和衰减因子 rho:

  • TensorFlow 也支持 Hinton 的 RMSprop,其工作方式类似于 Adadelta 的 tf.train.RMSpropOptimizer():

Adadelta 和 RMSprop 之间的细微不同可参考 http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf 和 https://arxiv.org/pdf/1212.5701.pdf

  • 另一种 TensorFlow 支持的常用优化器是 Adam 优化器。该方法利用梯度的一阶和二阶矩对不同的系数计算不同的自适应学习率:

  • 除此之外,TensorFlow 还提供了以下优化器:                                                                

通常建议从较大学习率开始,并在学习过程中将其降低。这有助于对训练进行微调。可以使用 TensorFlow 中的 tf.train.exponential_decay 方法来实现这一点。

根据 TensorFlow 文档,在训练模型时,通常建议在训练过程中降低学习率。该函数利用指数衰减函数初始化学习率。需要一个 global_step 值来计算衰减的学习率。可以传递一个在每个训练步骤中递增的 TensorFlow 变量。函数返回衰减的学习率。
变量:

  • learning_rate:标量float32或float64张量或者Python数字。初始学习率。
  • global_step:标量int32或int64张量或者Python数字。用于衰减计算的全局步数,非负。
  • decay_steps:标量int32或int64张量或者Python数字。正数,参考之前所述的衰减计算。
  • decay_rate:标量float32或float64张量或者Python数字。衰减率。
  • staircase:布尔值。若为真则以离散的间隔衰减学习率。
  • name:字符串。可选的操作名。默认为ExponentialDecay。
    返回:
  • 与learning_rate类型相同的标量张量。衰减的学习率。

实现指数衰减学习率的代码如下:

 

标签:学习,函数,梯度,用法,器及,TensorFlow,优化,衰减
来源: https://www.cnblogs.com/wujianming-110117/p/14347929.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有