我正在尝试从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,我根本不知道为什么。有专家可以告诉我如何进行计算吗?
答案 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)=108
。 dy/dx=2*x=6
。您的第二个示例的推导相同。顺便说一句,在第二个示例中,dy/dx
应该是27而不是6。