[tf]tf.identity和=赋值的区别

  • y = tf.identity(x)是一个op操作表示将x的值赋予y
  • y = x只是一个内存拷贝,并不是一个op,而control_dependencies只有当里面是一个Op的时候才能起作用。
  • Assign, Identity 这两个OP 与Variable 关系极其紧密,分别实现了变量的修改与读取。因此,它们必须与Variable 在同一个设备上执行;这样的关系,常称为同位关系(Colocation)。
x = tf.Variable(0.0)
#返回一个op,表示给变量x加1的操作
x_plus_1 = tf.assign_add(x, 1)
  
#control_dependencies的意义是,在执行with包含的内容(在这里就是 y = x)前
#先执行control_dependencies中的内容(在这里就是 x_plus_1)
with tf.control_dependencies([x_plus_1]):
    y = x
init = tf.initialize_all_variables()
  
with tf.Session() as session:
    init.run()
    for i in xrange(5):
        print(y.eval())
>>0
0
0
0
0
x = tf.Variable(1.0)
y = tf.Variable(0.0)
x_plus_1 = tf.assign_add(x, 1)

with tf.control_dependencies([x_plus_1]):
    y = tf.identity(x)#修改部分
init = tf.initialize_all_variables()

with tf.Session() as session:
    init.run()
    for i in xrange(5):
        print(y.eval())
>>2
3
4
5
6
    原文作者:VanJordan
    原文地址: https://www.jianshu.com/p/e922e86b7124
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞