Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow tf.gradients()或optimizer.compute_gradients()获得的梯度是否已被求反?_Tensorflow_Machine Learning_Optimization - Fatal编程技术网

Tensorflow tf.gradients()或optimizer.compute_gradients()获得的梯度是否已被求反?

Tensorflow tf.gradients()或optimizer.compute_gradients()获得的梯度是否已被求反?,tensorflow,machine-learning,optimization,Tensorflow,Machine Learning,Optimization,tf.gradients()或optimizer.compute_gradients()获得的梯度是否已被求反 例如,对于梯度下降,我们知道方向应该设置为负梯度,-E'(W),其中E'(W)是梯度,E(W)是损失 在Tensorflow中,通过tf.gradients()或tf.train.GradientDescentOptimizer.compute_gradients(),我们可以得到梯度。但是获得的梯度是否已经设置为负值 如果我们想对梯度进行一些计算,我认为重要的是要知道梯度是否被否定。

tf.gradients()或optimizer.compute_gradients()获得的梯度是否已被求反

例如,对于梯度下降,我们知道方向应该设置为负梯度,-E'(W),其中E'(W)是梯度,E(W)是损失

在Tensorflow中,通过tf.gradients()或tf.train.GradientDescentOptimizer.compute_gradients(),我们可以得到梯度。但是获得的梯度是否已经设置为负值


如果我们想对梯度进行一些计算,我认为重要的是要知道梯度是否被否定。

不,梯度没有被否定,它们遵循正确的梯度定义。下面是一个TF2.0示例(使用渐变带):

这将打印
tf.Tensor(4.0,shape=(),dtype=float32)
,(即2*x),我们可以看到它没有被否定

在TF1.X中,
TF.gradients
给出了相同的结果
optimizer.compute_gradients
只使用该函数,因此它将再次给出相同的结果


否定需要由用户处理,也就是说,如果你想自己实现梯度下降,你需要从变量中减去梯度,以最小化损失。在
优化器
类中,这包括在
应用梯度
步骤中(即,这里应用负梯度)。

非常感谢。非常感谢。
x = tf.constant(2.)
with tf.GradientTape() as tape:
    tape.watch(x)
    y = x**2
print(tape.gradient(y, x))