[tf]tf.assign和 = 的区别

2019-02-15  本文已影响45人  VanJordan

引用
引用

第一个例子:因为op是tensorflow中的一个结点,而assign_add是对原始的节点a进行赋值,所以最终的结果是7。

a = tf.Variable(3)
op = tf.assign_add(a,1)
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    sess.run(op)
    sess.run(op)
    sess.run(op)
    sess.run(op)
    print(sess.run(a))
>>7

第二个例子:注意a = a + 1的实际操作是首先将右边a的节点加上1,这是一个新建节点操作,a+1返回的是这个新建节点,此时a = 新建节点。也就是a引用的节点地址从变量a变成了a+1操作符的引用,我们打印出来可以看到,此时的a是一个add操作。这是run(a)就不会修改原始节点name="a"的值,也就是始终为1也就是关键问题是在计算图上没有给原始的变量a进行赋值,所以他的值始终是1,加了1以后add操作符打印出来是2

a = tf.Variable(3)
a = a + 1

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    sess.run(a)
    sess.run(a)
    sess.run(a)
    sess.run(a)
    print(a)
    print(sess.run(a))
>>Tensor("add:0", shape=(), dtype=int32)
4
上一篇下一篇

猜你喜欢

热点阅读