张量流梯度胶带解释

时间:2019-10-04 01:36:38

标签: tensorflow

我正在尝试从tensorflow tf.gradientTape了解API

以下是我从官方网站获得的代码:

x = tf.constant(3.0)
with tf.GradientTape(persistent=True) as g:
  g.watch(x)
  y = x * x
  z = y * y
dz_dx = g.gradient(z, x)  # 108.0 (4*x^3 at x = 3)
dy_dx = g.gradient(y, x)  # 6.0

我想知道他们如何将dz_dx设为108,将dy_dx设为6?

我还做了另一个如下测试:

x = tf.constant(3.0)
with tf.GradientTape(persistent=True) as g:
  g.watch(x)
  y = x * x * x
  z = y * y
dz_dx = g.gradient(z, x)  # 1458.0 
dy_dx = g.gradient(y, x)  # 6.0

这次dz_dx变为1458,我根本不知道为什么。有专家可以告诉我如何进行计算吗?

1 个答案:

答案 0 :(得分:0)

y=x*x,我们可以有dy/dx=2*x。从z=y*y开始,我们有了dz/dy=2*y。根据链式规则dz/dx=(dz/dy)*(dy/dx)=(2*y)*(2*x)=(2*x*x)*(2*x)=108dy/dx=2*x=6。您的第二个示例的推导相同。顺便说一句,在第二个示例中,dy/dx应该是27而不是6。