(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