tensorflow-底层梯度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tensorflow-底层梯度相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Mon Aug 27 11:16:32 2018
@author: myhaspl
"""

import tensorflow as tf
x = tf.constant(1.)
a = 12*x
b = 2*a
c = 3*b
g1 = tf.gradients([a + b + c], [a, b, c])
g2 = tf.gradients([a + b + c], [a, b, c],stop_gradients=[a, b, c])

sess=tf.Session()
with sess:

    print sess.run(g1)
    print sess.run(g2)

[9.0, 4.0, 1.0]
[1.0, 1.0, 1.0]
与全导数g1 = tf.gradients([a + b + c], [a, b, c])相比,偏导数g2 = tf.gradients([a + b + c], [a, b, c],stop_gradients=[a, b, c])
的值是[1.0,1.0 , 1.0],而全导数g1 = tf.gradients([a + b + c], [a, b, c])考虑了a对b和c的影响,并求值为[9.0, 4.0, 1.0],例如:

(a+b+c)‘a=9,其中:

b=2*a

c=3b=32*a=6a

相比于在图构造期间使用的tf.stop_gradient。stop_gradients提供了已经构造完图之后停止梯度的方法,当将这两种方法结合起来时,反向传播在tf.stop_gradient节点和stop_gradients节点处都停止,无论首先遇到哪个节点。

以上是关于tensorflow-底层梯度的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow Adam Multigpu 梯度

TensorFlow2 手把手教你避开梯度消失和梯度爆炸

如何在 Tensorflow 中实现反转梯度?

Tensorflow--梯度下降解决线性回归

在 keras(tensorflow 后端)中计算梯度时出错

Tensorflow ValueError:没有为任何变量提供梯度