IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]AI学习之路(16): TensorFlow优化器1

    caimouse发表于 2017-03-03 09:38:51
    love 0

    训练模型

     

    在TF里提供了一些类和函数来帮助训练神经网络模型,主要的类就是优化器类,它提供一个基类的接口,让外面使用所有优化器算法达到统一,因此,优化器是接口类,你不能实例化它,只能从它的派生类来进行实例化。优化器主提供一些计算梯度损失函数和应用梯度到变量,以及提供优化的算法,比如像梯度下降算法(gradient descent,即随机梯度下降)和Adagrad(一个基于梯度优化的算法)。

     

    class tf.train.Optimizer

    优化器的基类。定义训练模式的操作方式,因为这个类是抽象基类,不要实例化它,需要使用它的派生类:GradientDescentOptimizer, AdagradOptimizer, 或 MomentumOptimizer。

    用法:

    # 用指定参数来创建优化器.

    opt = GradientDescentOptimizer(learning_rate=0.1)

    # 设置图里的最小化损失函数的操作方式。

    # 损失函数是一个张量,要操作的变量列表就是在tf.Variable对象里。.

    opt_op = opt.minimize(cost, var_list=<变量列表>)

     

    接着下来使用opt_op来进行训练一步的操作如下:

    opt_op.run()

     

    在应用梯度结果之前处理梯度参数

    常常对于简单的应用,只需要调用minimize()函数就可以实现计算梯度参数,并且立即应用这些参数到变量里,但是有时候需要计算出来梯度参数之后,进行某种处理,那么就需要按下面三个步骤来进行:

    1、调用函数compute_gradients()来计算梯度。

    2、按你的要求来处理梯度。

    3、调用函数apply_gradients()来应用梯度。

     

    例如:

    # 创建优化器

    opt = GradientDescentOptimizer(learning_rate=0.1)

     

    # 计算变量列表的梯度

    grads_and_vars = opt.compute_gradients(loss, <list of variables>)

     

    # 梯度grads_and_vars是一个元组 tuples (gradient, variable).

    # 如果只想使用梯度部分,可以使用像下面这样使用它。

    capped_grads_and_vars = [(MyCapper(gv[0]), gv[1]) for gv in grads_and_vars]

     

    # 再调用优化器来应用已经修改过的梯度数据.

    opt.apply_gradients(capped_grads_and_vars)

     

    1. C++标准模板库从入门到精通 

    http://edu.csdn.net/course/detail/3324

    2.跟老菜鸟学C++

    http://edu.csdn.net/course/detail/2901

    3. 跟老菜鸟学python

    http://edu.csdn.net/course/detail/2592

    4. 在VC2015里学会使用tinyxml库

    http://edu.csdn.net/course/detail/2590

    5. 在Windows下SVN的版本管理与实战 

     http://edu.csdn.net/course/detail/2579

    6.Visual Studio 2015开发C++程序的基本使用 

    http://edu.csdn.net/course/detail/2570

    7.在VC2015里使用protobuf协议

    http://edu.csdn.net/course/detail/2582

    8.在VC2015里学会使用MySQL数据库

    http://edu.csdn.net/course/detail/2672



沪ICP备19023445号-2号
友情链接