tensorflow-底层梯度tf.AggregationMethod,tf.gradients

(1)tf.AggregationMethod是一个类

Class?AggregationMethod
类拥有的方法主要用于聚集梯度

?计算偏导数需要聚集梯度贡献,这个类拥有在计算图中聚集梯度的很多方法。比如:

ADD_N: 所有的梯度被求和汇总,使用 "AddN"操作。有一个特点:所有的梯度在聚集之前必须要准备好,
DEFAULT: 默认聚集方法
类方法

ADD_N

DEFAULT

EXPERIMENTAL_ACCUMULATE_N

EXPERIMENTAL_TREE

TensorFlow拥有计算给定TensorFlow计算图的导数的函数。优化器类自动计算图上的导数,但是新的优化器的创建者或专家用户可以调用下面的底层函数。

(2)tf.gradients

tf.gradients(
? ? ys,
? ? xs,
? ? grad_ys=None,
? ? name=‘gradients‘,
? ? colocate_gradients_with_ops=False,
? ? gate_gradients=False,
? ? aggregation_method=None,
? ? stop_gradients=None
)

在XS中构造ys关于x的符号导数之和。

ys和xs是 每个tensor或tensor的列表。grad_ys是一个tensor列表,保存由ys接收的梯度,列表必须和ys长度一样。

gradients()将操作增加到图中,输出关于ys的导数,返回长度LeN(xs)的tensor的列表,其中每个tensor是ys中所有y的sum(Dy/Dx)。

grad_ys是一个张量(tensor)列表,其长度与ys的长度相同,它保持ys中的每个y的初始梯度。当grad_ys为None时,我们在ys中为每个y填充一个Y尺寸的‘1‘s的张量。用户可以提供他们自己的初始grad_ys来对每个y使用不同的初始梯度来计算导数(例如,如果希望为每个y中的每个值提供不同的加权梯度)。

(3)stop_gradients?

是一个tensor或tensor的列表,所有关于xs作为常量(constant),这些tensor不会被反向传播,仿佛它们已经被使用stop_gradients?显式地断开。除此之外,这允许计算偏导数,而不是全导数。

在数学中,一个多变量的函数的偏导数,就是它关于其中一个变量的导数而保持其他变量恒定

f"xy与f"yx的区别在于:前者是先对 x 求偏导,然后将所得的偏导函数再对 y 求偏导;后者是先对 y 求偏导再对 x 求偏导。当 f"xy 与 f"yx 都连续时,求导的结果与先后次序无关。

已知二元函数z=f(u,v),其中u、v是关于x的一元函数,有u=u(x)、v=v(x),u、v作为中间变量构成自变量x的复合函数z,它最终是一个一元函数,它的导数就称为全导数。全导数的出现可以作为一类导数概念的补充,其中***着整合全部变量的思想。

求 z=x^3+6xy+y^5?偏导数。

解:?= 3x + 6y, ???= 6x + 5y.

tf.stop_gradient
tf.hessians

原文地址:http://blog.51cto.com/13959448/2330187

时间: 2024-11-05 23:35:33

tensorflow-底层梯度tf.AggregationMethod,tf.gradients的相关文章

TensorFlow 实战(二)—— tf train(优化算法)

Training | TensorFlow tf 下以大写字母开头的含义为名词的一般表示一个类(class) 1. 优化器(optimizer) 优化器的基类(Optimizer base class)主要实现了两个接口,一是计算损失函数的梯度,二是将梯度作用于变量.tf.train 主要提供了如下的优化函数: tf.train.Optimizer tf.train.GradientDescentOptimizer tf.train.AdadeltaOpzimizer Ada delta tf.

TensorFlow 学习(二)—— tf Graph tf Session 与 tf Session run

session: with tf.Session() as sess:/ tf.InteractiveSession() 初始化: tf.global_variables_initializer() with tf.Session() as sess: sess.run(tf.global_variables_initializer()) 1 2 0. tf.Graph 命名空间与 operation name(oper.name 获取操作名): c_0 = tf.constant(0, nam

TensorFlow Saver 保存最佳模型 tf.train.Saver Save Best Model

TensorFlow Saver 保存最佳模型 tf.train.Saver Save Best Model Checkmate is designed to be a simple drop-in solution for a very common Tensorflow use-case: keeping track of the best model checkpoints during training. The BestCheckpointSaver is a wrapper arou

TensorFlow函数(九)tf.add_to_collection()、tf.get_collection() 和 tf.add_n()

tf.add_to_collection(name, value) 此函数将元素添加到列表中 参数: name:列表名.如果不存在,创建一个新的列表 value:元素 tf.get_collection(name) 此函数获取列表 参数: name:列表名 tf.add_n(inputs) 此函数将元素相加并返回 注意:元素类型必须一致,否者报错 1 tf.add_to_collection('losses', regularizer(weights)) 2 tf.add_n(tf.get_co

TF:TF定义两个变量相乘之placeholder先hold类似变量+feed_dict最后外界传入值—Jason niu

#TF:TF定义两个变量相乘之placeholder先hold类似变量+feed_dict最后外界传入值 import tensorflow as tf input1 = tf.placeholder(tf.float32) #TF一般只能处理float32的数据类型 input2 = tf.placeholder(tf.float32) #ouput = tf.mul(input1, input2) ouput = tf.multiply(input1, input2) #定义两个变量相乘 w

tf.unstack\tf.unstack

tf.unstack 原型: unstack( value, num=None, axis=0, name='unstack' ) 官方解释:https://tensorflow.google.cn/api_docs/python/tf/unstack 解释:这是一个对矩阵进行分解的函数,以下为关键参数解释: value:代表需要分解的矩阵变量(其实就是一个多维数组,一般为二维): axis:指明对矩阵的哪个维度进行分解. 要理解tf.unstack函数,我们不妨先来看看tf.stack函数.T

TensorFlow的梯度裁剪

在较深的网络,如多层CNN或者非常长的RNN,由于求导的链式法则,有可能会出现梯度消失(Gradient Vanishing)或梯度爆炸(Gradient Exploding )的问题. 原理 问题:为什么梯度爆炸会造成训练时不稳定而且不收敛? 梯度爆炸,其实就是偏导数很大的意思.回想我们使用梯度下降方法更新参数: 损失函数的值沿着梯度的方向呈下降趋势,然而,如果梯度(偏导数)很大话,就会出现函数值跳来跳去,收敛不到最值的情况,如图: 当然出现这种情况,其中一种解决方法是,将学习率αα设小一点,

TFboy养成记 tf.cast,tf.argmax,tf.reduce_sum

referrence: 莫烦视频 先介绍几个函数 1.tf.cast() 英文解释: 也就是说cast的直译,类似于映射,映射到一个你制定的类型. 2.tf.argmax 原型: 含义:返回最大值所在的坐标.(谁给翻译下最后一句???) ps:谁给解释下axis最后一句话? 例子: 3.tf.reduce_mean() 原型: 含义:一句话来说就是对制定的reduction_index进行均值计算. 注意,reduction_indices为0时,是算的不同的[]的同一个位置上的均值 为1是是算

ROS TF——learning tf

在机器人的控制中,坐标系统是非常重要的,在ROS使用tf软件库进行坐标转换. 相关链接:http://www.ros.org/wiki/tf/Tutorials#Learning_tf 一.tf简介 我们通过一个小小的实例来介绍tf的作用. 1.安装turtle包 $ rosdep install turtle_tf rviz $ rosmake turtle_tf rviz 2.运行demo 运行简单的demo: $ roslaunch turtle_tf turtle_tf_demo.lau