欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tensorflow问题-tf.assign与=赋值的区别

程序员文章站 2022-03-22 19:09:56
...
  • tf.assign与=似乎都是赋值,那么二者的区别到底是什么呢?有些解释涉及到新建节点啊,引用什么的更深层次的区别,这里就以简单的例子说明下二者实际的区别方便各位理解。
# 一
a = tf.Variable(0,name='a')
init = tf.global_variables_initializer()
add_op = tf.assign(a,tf.add(a,1))

# 每次run add_op,便会执行一次对a值+1并赋值到a节点,因此每次run(add_op)后再sess.run(a)值相应的也会发生变化
sess.run(init)
for epoch in range(5):
    print(sess.run(add_op))
    print(sess.run(a))

结果:
1
1
2
2
3
3
4
4
5
5

# 二
a = tf.Variable(0,name='a')
init = tf.global_variables_initializer()
a = a+1

# a+1为创建的新的节点并将该地址赋予变量a上,因此a目前对应的值为0+1=1,但是多次run(a)并不会改变,因为没有具体的运算符
sess.run(init)
for epoch in range(5):
    print(sess.run(a))

结果:
1
1
1
1
1