TensorFlow学习记录:常用的梯度下降算法

本文介绍了TensorFlow中几种常用的梯度下降优化器,包括GradientDescentOptimizer、AdagradOptimizer、RMSPropOptimizer和AdamOptimizer。通过解释它们的工作原理和使用方式,帮助理解如何在神经网络训练中应用这些优化器来降低损失函数。
摘要由CSDN通过智能技术生成

一般情况下,平常所说的训练神经网络指的都是使用框架里面体提供的优化器(也可以称作梯度下降函数)去降低loss值。梯度下降算法简单点理解就是让损失函数loss对神经网络内的参数进行求导(链式求导),通过不停地更新网络内的参数使得损失值loss沿着损失函数减小的方向移动,最终让损失值loss达到尽可能小的过程。

求解梯度下降的过程比较复杂难懂,并且梯度下降方法也有很多中,幸运的是TensorFlow中已经
将很多常用的梯度下降方法封装成了函数方法,用户不需要考虑手动编写梯度下降的具体过程即可实现梯度下降的目的。

1.train.Optimizer

这是一个基本的梯度下降类,这个类不会被直接调用,更多的是使用它的一些子类,比如AdagradOptimizer、GradientDescentOptimizer等。
这个类中的__init__()函数的定义为:

class Optimizer():
	def __init__(self, use_locking, name):
	    """Create a new Optimizer.
	
	    This must be called by the constructors of subclasses.
	
	    Args:
	      use_locking: Bool. If True apply use locks to prevent concurrent updates
	        to variables.
	      name: A non-empty string.  The name to use for accumulators created
	        for the optimizer.
	
	    Raises:
	      ValueError: If name is malformed.
	    """

对于一个具体的优化器类(Optimizer类的子类),通常会调用定义在Optimizer类中的minimize函数来指定最小化的目标。Optimizer类的minimize()函数原型为:

def minimize(self, loss, global_step=None, var_list=None,
               gate_gradients=GATE_OP, aggregation_method=None,
               colocate_gradients_with_ops=False, name=None,
               grad_loss=None):
    """Add operations to minimize `loss` by updating `var_list`.

    This method simply combines calls `compute_gradients()` and
    `apply_gradients()`. If you want to process the gradient before applying
    them call `compute_gradients()` and `apply_gradients()` explicitly instead
    of using this function."""
2.train.GradientDescentOptimizer()

train.GradientDescentOptimizer()是梯度下降优化器,实现了梯度下降算法,是Optimizer类的一个子类。

class GradientDescentOptimizer(optimizer.Optimizer):
  """Optimizer that implements the gradient descent algorithm.
  """

  def __init__(self, learning_rate, use_locking=False, name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值