我试图在一个节点张量流示例中编写自己的multi-gpu。
我在这里阅读了代码:https://github.com/tensorflow/models/blob/master/tutorials/image/cifar10/cifar10_multi_gpu_train.py
我的核心代码是:
vars = tf.trainable_variables()
grads = tf.gradients(cost, vars)
tower_grads.append(grads)
但是当程序运行到第二个GPU时,tf.trainable_variables()
返回第一轮循环张量流变量和第二轮的张量流变量。
顺便说一句,我认为这个任务是两个GPU使用相同的变量,但渐变是不同的。是不是?
答案 0 :(得分:0)
问题在于
该变量在第一轮中被命名为aaa
。
但是变量在第二轮中被命名为aaa_1
。即使我设置reuse = True
。
解决方案是使用tf.get_variable
代替tf.Variable