阅读(708) (17)

TensorFlow梯度计算:tf.gradients

2017-10-24 17:23:27 更新
函数: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:如果参数无效.