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

3/8/2017来源:ASP.NET技巧人气:1107

训练模型

 

在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