【问题标题】:How it the concept of gradient in TensorFlow related to the mathematical definition of gradient?TensorFlow 中的梯度概念与梯度的数学定义有何关系?
【发布时间】:2019-01-08 09:13:14
【问题描述】:

TensorFlow documentation 解释了 功能

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

说:

  • [it] 构造 ys w.r.t 之和的符号导数。 x 在 xs 中。
  • ys 和 xs 都是张量或张量列表。
  • gradients() 向图中添加操作以输出 ys 相对于 xs 的导数。
  • ys:张量或要区分的张量列表

我发现很难将其与梯度的数学定义联系起来。例如,根据wikipedia,标量函数 f(x1, x2, x3, ..., xn) 的 梯度 是向量场(即函数 grad f : Rn -> Rn) 具有涉及向量点积的某些性质。也可以讲 f 在某个点的梯度:(grad f)(x1, x2, x3, ..., xn)。

TensorFlow 文档讨论的是 tensors 而不是 vectors:梯度的定义是否可以从将向量映射到标量的函数推广到将张量映射到标量的函数?张量之间是否存在点积?

即使梯度的定义可以应用于将张量映射到标量的函数 f(定义中的点积适用于张量),文档也谈到了区分 张量 本身:参数ys 是“张量或要区分的张量列表”。根据文档“张量是用于计算的多维数组”,所以张量不是函数,如何区分?

那么,TensorFlow 中的梯度概念与 wikipedia 中的定义有何关系?

【问题讨论】:

标签: tensorflow machine-learning gradient


【解决方案1】:

人们会期望 Tensorflow 梯度只是Jacobian,即秩 (m) 张量 Y 的导数秩 (n) 张量 X 是由每个单独的导数 ∂Y 组成的秩 (m + n) 张量j1...jm/∂Xi 1...in.

然而,你可能注意到梯度实际上并不是一个秩 (m + n) 张量,而是总是取张量 的秩 n >X——事实上,Tensorflow 似乎为您提供了标量和 (Y) 相对于 X 的梯度。

当然,真正的雅可比行列式存储在内部,以便在应用链式规则时进行计算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多