Tensorflow 2.0中的梯度计算

问题描述 投票:2回答:1

这是我的Tensorflow 2.0示例:

import tensorflow as tf

w = tf.Variable([[1.0]])
with tf.GradientTape() as tape_1:
    loss_1 = w * w


with tf.GradientTape() as tape_2:
    loss_2 = w * w * w

grad_1 = tape_1.gradient(loss_1, w)
grad_2 = tape_2.gradient(loss_2, w)
print(grad_1)
print(grad_2)

返回:

tf.Tensor([[2.]], shape=(1, 1), dtype=float32)
tf.Tensor([[3.]], shape=(1, 1), dtype=float32)

以上是正确的系数,但grad_2还应表明我们有3w ^ 2。如何检索w^2部分?

tensorflow derivative gradienttape
1个回答
1
投票

梯度结果并不意味着那样。如果采用函数f(w)= w 2和g(w)= w 3,则它们相对于w的导数函数为f'(w)= 2w和g'(w)= 3w 2。对于w的当前值,梯度函数为您提供的是这些函数的值。因此,由于w初始化为1,它为您提供f'(1)= 2和g'(1)= 3.TensorFlow可以以某种方式计算符号导数函数,但可以作为TensorFlow操作的序列,因此从中提取一个好的数学表达式并不容易。而且,由于急切执行(如您所使用的那样),它甚至不可用,将在必要时执行操作,并丢弃中间体。

© www.soinside.com 2019 - 2024. All rights reserved.