我对张量流中的变量分配和位置感到困惑
如果我们在某个设备中创建变量,例如在gpu0中。而我们将需要在其他设备(例如gpu2)中更新此变量的值。确切的任务将在哪里发生?
def foo():
tf.reset_default_graph()
with tf.device("/gpu:0"):
x = tf.Variable(3, name='x')
with tf.device("/gpu:1"):
y = tf.Variable(6, name='y')
return x, y
x, y = foo()
with device("/gpu:2")
z1 = tf.assign(x, 1) ---(1)
z2 = tf.assign(y, 2) ---(2)
z3 = tf.multipy(x, y) ---(3)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
sess.run(z1)
sess.run(z2)
sess.run(z3)
对于上面的示例,我的理解是,z1 / z2将会在gpu2上发生,但是实际上,x将在gpu0中更新,而y将在gpu1中更新。在-(3)中,gpu2将再次从gpu0和gpu1获取x / y,然后在gpu2中的乘法运算中完成
如果我想念的东西请纠正我