python-3.x - 通过有状态对象获取渐变
问题描述
我已经开始通过官方指南学习 TensorFlow:https ://www.tensorflow.org/guide 。
我的理解是在指南中名为“自动微分”的部分,尤其是“通过有状态对象获取渐变”的一部分。
我不明白他们为什么说有状态的对象停止渐变。该指南给出了这段代码
x0 = tf.Variable(3.0)
x1 = tf.Variable(0.0)
with tf.GradientTape() as tape:
# Update x1 = x1 + x0.
x1.assign_add(x0)
# The tape starts recording from x1.
y = x1**2 # y = (x1 + x0)**2
# This doesn't work.
print(tape.gradient(y, x0)) #dy/dx0 = 2*(x1 + x0)
为什么渐变不记录x0
?!是这个函数.assign_add(x0)
增加x1
了 overshadowx0
吗?是因为assign_add
会选择x0
并窃取其分配的内存吗?这是正确的原因还是我看不到的其他原因?
预先感谢您的回答。
解决方案
推荐阅读
- android - 无法解析 com.google.android.gms.ads.MobileAds
- javascript - Websocket - 在应用程序在后台和前夕期间断开用户 Android/iOS
- android - 如何在android Matlab中获取文件的路径
- entity-framework - 实体框架6代码中的多对多关系优先
- python - 随机游走得到不好的结果
- c# - 如何在 RocksDbSharp 的 read_options 中设置 prefix_same_as_start
- c# - 程序在 main 方法后结束
- python - 每行字符限制的视觉指南
- sql - 如何在 WHERE in (string) 条件中使用 SQL 表而不是长字符串
- java - Eclipse jena 中的查询本体