gpt4 book ai didi

python - 急切执行: gradient computation

转载 作者:行者123 更新时间:2023-11-30 22:07:55 25 4
gpt4 key购买 nike

我想知道为什么这个非常简单的梯度计算无法正常工作。它实际上是生成一个[None, None]向量。显然,这不是所需的输出。

import tensorflow as tf
tf.enable_eager_execution()

a = tf.constant(0.)
with tf.GradientTape() as tape:
b = 2 * a
da, db = tape.gradient(a + b, [a, b])
print(da)
print(db)

预期输出:da = 3 且 db = 1

最佳答案

您发布的代码片段有两个小问题:

  1. a + b 计算发生在磁带上下文之外,因此不会被记录。请注意,GradientTape 只能区分记录的计算。在磁带上下文中计算 a + b 将解决这个问题。

  2. 需要“监视”源张量。有两种方法可以向磁带发出应该监视张量的信号: (a) 显式调用 tape.watch ,或 (b) 使用 tf.Variable (监视所有变量),请参阅 documentation

长话短说,对代码片段进行两个简单的修改就可以解决问题:

import tensorflow as tf
tf.enable_eager_execution()

a = tf.constant(0.)
with tf.GradientTape() as tape:
tape.watch(a)
b = 2 * a
c = a + b
da, db = tape.gradient(c, [a, b])
print(da)
print(db)

希望有帮助。

关于python - 急切执行: gradient computation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52340645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com