首页 文章

采用Tensorflow中的渐变,tf.gradient

提问于
浏览
0

我正在使用tensorflow的这个函数来获取我的函数jacobian . 遇到两个问题:

  • 如果我没有弄错的话,张量流文档在以下两段中与自身相矛盾:

gradient()将ops添加到图形中以输出ys相对于xs的偏导数 . 它返回长度为len(xs)的Tensor列表,其中每个张量是y中y的和(dy / dx) . Blockquote Blockquote返回:xs中每个x的sum(dy / dx)列表 . 大段引用

根据我的测试,它实际上是返回len(ys)的向量,它是xs中每个x的和(dy / dx) .

  • 我不明白为什么他们设计它的方式是返回是列的总和(或行,取决于你如何定义雅可比行列式) .

  • 我怎么能真正得到雅可比人呢?

4.在丢失中,我需要关于输入(x)的函数的偏导数,但是当我针对网络权重进行优化时,我将x定义为占位符,其值稍后被输入,并且权重是可变的在这种情况下,我还可以定义关于输入(x)的函数的符号导数吗?并把它丢失? (后来当我们对权重进行优化时会带来函数的二阶导数 . )

1 回答

  • 1
    • 我认为你是对的,那里有一个错字,它可能意味着“长度为len(ys)” .

    • 为了提高效率 . 我无法准确解释推理,但这似乎是TensorFlow如何处理自动差异化的一个非常基本的特征 . 见issue #675 .

    • 在TensorFlow中没有直接获得雅可比矩阵的方法 . 看看this answer再次issue #675 . 基本上,每列/每行需要一次 tf.gradients 调用 .

    • 是的,当然 . 你可以计算你想要的任何渐变,实际上占位符和任何其他操作之间没有真正的区别 . 有一些操作没有渐变,因为它没有很好地定义或没有实现(在这种情况下它通常会返回0),但这就是全部 .

相关问题