Tensorflow tf.gradients()或optimizer.compute_gradients()获得的梯度是否已被求反?
tf.gradients()或optimizer.compute_gradients()获得的梯度是否已被求反 例如,对于梯度下降,我们知道方向应该设置为负梯度,-E'(W),其中E'(W)是梯度,E(W)是损失 在Tensorflow中,通过tf.gradients()或tf.train.GradientDescentOptimizer.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(),我们可以得到梯度。但是获得的梯度是否已经设置为负值 如果我们想对梯度进行一些计算,我认为重要的是要知道梯度是否被否定。
如果我们想对梯度进行一些计算,我认为重要的是要知道梯度是否被否定。不,梯度没有被否定,它们遵循正确的梯度定义。下面是一个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))