TensorFlow梯度计算:tf.gradients
2018-10-24 17:49 更新
函数:tf.gradients
gradients(
ys,
xs,
grad_ys=None,
name='gradients',
colocate_gradients_with_ops=False,
gate_gradients=False,
aggregation_method=None
)
定义在:tensorflow/python/ops/gradients_impl.py.
参见指南:Training函数>梯度计算
在 xs 中构造了 ys 的 w.r.t. x 和的符号偏导数.
ys 和 xs 是一个张量或一个张量的列表.grad_ys 是一个张量列表,持有由 ys 接收的梯度.该列表必须与 ys 具有相同长度.
gradients() 向图形添加操作以输出 ys 相对于的偏导数 xs.它返回长度为 len (xs) 的张量列表,其中每个张量 ys 中 y 的 sum(dy/dx).
grad_ys 是与 ys 相同长度的张量列表,它包含 y 的初始梯度.当 grad_ys 是 None 时,我们在 ys 中为每个 y 填入一个1的形状的张量.用户可以提供自己的初始 grad_ys,使用不同的初始梯度为每个 y 计算导数 (例如:如果你想为每个 y 中的每个值不同地加权梯度).
参数:
- ys:要区分的张量或者张量列表.
- xs:用于微分的张量或者张量列表.
- grad_ys:(可选)与 ys 具有相同大小的张量或张量列表,并且对 ys 中的每个 y 计算的梯度.
- name:用于将所有渐变操作组合在一起的可选名称.默认为“渐变”.
- colocate_gradients_with_ops:如果为 True,请尝试使用相应的操作对齐梯度.
- gate_gradients:如果为True,则在操作返回的梯度周围添加一个元组.这避免了一些竞态条件.
- aggregation_method:指定用于组合渐变项的方法.接受的值是在类 AggregationMethod 中定义的常量.
返回值:
该函数返回 xs 中每个 x 的 sum(dy/dx) 的列表.
可能引发的异常:
- LookupError:如果 x 和 y 之间的一个操作是没有注册的梯度函数.
- ValueError:如果参数无效.