gpt4 book ai didi

python - 计算 tensorflow 梯度

转载 作者:太空宇宙 更新时间:2023-11-04 00:13:32 27 4
gpt4 key购买 nike

我对 tensorflow gradient documentation 中的示例感到困惑用于计算梯度。

a = tf.constant(0.)
b = 2 * a
g = tf.gradients(a + b, [a, b])

with tf.Session() as sess:
print(sess.run(g))

给出 [3.0, 1.0]

我觉得我真的遗漏了一些明显的东西,但是如果 a 本质上是 0 那么 b 因此 a+b = 0。那么关于 a 和 b 的微分零如何给你类似 [3.0, 1.0] 的东西。

我相信我在这里误解了 tensorflows 结构/语法。

最佳答案

为了比较,考虑实值函数 f :RR 一个实变量,由 f< 给出/em>(x) = 10 x。这里,f'(x) = 10,与 x 的值无关,所以特别是 f' (0) = 10。

类似地,如教程中所述,或多或少的定义是 total derivative的 (a, b) ↦ a + b 对于 b(a) = 2 a 是 (3, 1),与 a 无关。

举个不那么简单的例子,让我们考虑一下

a = tf.constant(5.)
b = 2 * a
g = tf.gradients(a**3 + 2*b**2, [a, b])

with tf.Session() as sess:
print(sess.run(g))

这里,关于 a 的全导数是 aa³ + 2(2 a)² = a³ + 8 a² 变成 a ↦ 3 a² + 16 < em>a,而关于 b 的导数是 a ↦ 4 b(a ) = 8 一个。因此,在 a = 5 时,我们期望结果为 (3 · 5² + 16 · 5, 8 · 5) = (155, 40),并运行你得到的代码。

关于python - 计算 tensorflow 梯度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51685934/

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