首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow gradientTape解释

Tensorflow gradientTape解释
EN

Stack Overflow用户
提问于 2019-10-04 09:36:39
回答 1查看 121关注 0票数 0

我正在尝试理解tensorflow tf.gradientTape的一个API。

下面是我从官网得到的代码:

代码语言:javascript
复制
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 as 108和dy_dx as 6的?

我还做了另一个类似下面的测试:

代码语言:javascript
复制
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,我完全不知道为什么。有没有专家能告诉我计算是怎么做的?

EN

回答 1

Stack Overflow用户

发布于 2019-10-04 11:06:11

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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58228821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档