我在tensorflow上使用multi gpu。而且我对在相同范围内共享变量感到困惑。
根据https://github.com/tensorflow/models/blob/master/tutorials/image/cifar10/cifar10_multi_gpu_train.py
最简单的方法是:
for i in xrange(FLAGS.num_gpus):
with tf.device('/gpu:%d' % i):
tf.get_variable_scope().reuse_variables()
// and do sth.
但在我的理解中,至少第一个GPU必须创建变量,因为它没有可重用的变量。我还发现一些代码为第一个GPU设置了reuse = False。
那么正确的方法是什么?
答案 0 :(得分:1)
是的,你是对的。对于第一个设备,reuse
标志应设置为False
。在教程中,tf.get_variable_scope().reuse_variables()
之后调用 for i in xrange(FLAGS.num_gpus):
with tf.device('/gpu:%d' % i):
with tf.variable_scope(name, reuse= i>0):
// and do sth
。你也可以这样做。
或另一种可能的解决方案:
{{1}}