首页 文章

TensorFlow如何计算tf.train.GradientDescentOptimizer的渐变?

提问于
浏览
3

我试图了解TensorFlow如何计算 tf.train.GradientDescentOptimizer 的渐变 .

如果我理解TensorFlow白皮书中的4.1节是正确的,它会通过向TensorFlow图中添加节点来计算基于反向传播的渐变,TensorFlow图计算原始图中节点的推导 .

当TensorFlow需要根据C所依赖的某个张量I计算张量C的梯度时,它首先在I到C的计算图中找到路径 . 然后它从C回溯到I,并且对于每个操作都是在向后路径中,它将节点添加到TensorFlow图形,使用链规则沿向后路径组成部分梯度 . 新添加的节点计算前向路径中相应操作的“梯度函数” . 可以通过任何操作来注册梯度函数 . 该功能不仅将已经沿后向路径计算的部分梯度作为输入,而且可选地将前向操作的输入和输出作为输入 . [第4.1节TensorFlow白皮书]

Question 1: 每个TensorFlow节点是否有第二个节点实现,它表示原始TensorFlow节点的派生?

Question 2: 有没有办法可视化哪些派生节点被添加到图表(或任何日志)?

1 回答

  • 5

    每个节点都有相应的方法来计算backprop值(使用Python中的@ ops.RegisterGradient(“Sum”)注册)

    您可以使用方法here可视化图形

    但请注意,由于自动微分代码适用于各种条件,因此它创建的图形非常复杂,并且看起来不是很有用 . 对于可以用1-2个节点实现的简单梯度计算,有10个ops节点并不罕见

相关问题