Tensorflow 张量流梯度带解释

Tensorflow 张量流梯度带解释,tensorflow,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 我想知道他们是怎么把

我试图理解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,我根本不知道为什么。有专家能告诉我是怎么计算的吗

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)=108
<代码>dy/dx=2*x=6。与第二个示例的推导相同。顺便说一句,在第二个例子中,
dy/dx
应该是27而不是6