【问题标题】:Using Tensorflow to perform chain rule使用 TensorFlow 执行链式法则
【发布时间】:2016-08-31 22:36:00
【问题描述】:

我刚刚阅读了 Tensorflow 文档,发现 tf.gradients(tf.gradients(ys, xs, grad_ys=None, name='gradients', colocate_gradients_with_ops=False, gate_gradients=False, aggregation_method=None) 可用于计算相对于 dy/dx 的梯度。目前,我想计算dz(f(x))/dx 的梯度(应该使用链式法则将其分解为dz/df * df/dx),我想知道Tensorflow 中是否有一种方法可以执行此链式法则。我也想知道 Tensorflow Doc 中的 grad_ys is a list of Tensor, holding the gradients received by the ys. The list must be the same length as ys. 是什么意思。

【问题讨论】:

  • Tensorflow 将为您完成链式法则。你只需告诉它你想要梯度的变量,它就会计算它。
  • 是的,我同意。但是如果计算dz/dfdf/dx的tensorflow图是断开的,我不能简单地告诉Tensorflow使用链式法则,所以我必须手动去做。例如,z(y) 的输入 y 是一个占位符,我们使用 f(x) 的输出来输入占位符 y。在这种情况下,计算z(y)f(x)的图是断开的。
  • 为什么不连接图表?
  • 在我的算法的当前实现中,我无法连接它们,因为连接它们会破坏我的算法。是的,如果图是连接的,计算梯度显然会很简单。

标签: python-3.x tensorflow gradient


【解决方案1】:

假设你的损失函数是损失 x 是您想要渐变的值。

假设你想在chainrule中相乘的函数的输出是dz do

tf.gradients(loss,x, grad_ys=dz)

希望能解决问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    相关资源
    最近更新 更多