当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.GradientTape.jacobian用法及代码示例


用法

jacobian(
    target, sources, unconnected_gradients=tf.UnconnectedGradients.NONE,
    parallel_iterations=None, experimental_use_pfor=True
)

参数

  • target 待区分的张量。
  • sources 张量或变量的列表或嵌套结构。 target 将与 sources 中的元素区分开来。
  • unconnected_gradients 一个可以保存 'none' 或 'zero' 的值,并更改目标和源未连接时将返回的值。可能的值和影响在'UnconnectedGradients' 中有详细说明,默认为'none'。
  • parallel_iterations 一个旋钮,用于控制并行调度多少次迭代。此旋钮可用于控制总内存使用量。
  • experimental_use_pfor 如果为真,则向量化雅可比计算。否则回退到顺序 while_loop。矢量化有时会失败或导致内存使用过多。在这种情况下,此选项可用于禁用矢量化。

返回

  • 张量(或无)的列表或嵌套结构,sources 中的每个元素一个。返回的结构与 sources 的结构相同。请注意,如果任何梯度是稀疏的(IndexedSlices),雅可比函数当前使其变得密集并返回一个张量。这在未来可能会改变。

抛出

  • RuntimeError 如果在使用过的非永久性磁带上调用。
  • RuntimeError 如果在启用了即刻执行但未启用 experimental_use_pfor 的情况下在非持久性磁带上调用。
  • ValueError 如果雅可比计算的矢量化失败。

使用记录在该磁带上下文中的操作计算雅可比。

注意:除非您设置 persistent=True,否则 GradientTape 只能用于计算一组梯度(或雅可比)。

注意:默认情况下,jacobian 实现使用并行 for (pfor),它在后台为每个 jacobian 调用创建一个 tf.function。为了获得更好的性能,并避免在每次调用时重新编译和矢量化重写,请将 GradientTape 代码包含在 @tf.function 中。

有关雅可比行列式的定义,请参见维基百科文章。

示例用法:

with tf.GradientTape() as g:
  x  = tf.constant([1.0, 2.0])
  g.watch(x)
  y = x * x
jacobian = g.jacobian(y, x)
# jacobian value is [[2., 0.], [0., 4.]]

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.GradientTape.jacobian。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。