-
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