tensorflow 多 GPU 共享变量

tensorflow multi gpu sharing variables

我在 tensorflow 上使用多 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 的代码。

那么正确的做法是什么?

是的,你是对的。对于第一个设备,reuse 标志应设置为 False。在教程中,tf.get_variable_scope().reuse_variables()construction of the network 之后被调用。你也可以这样做。

或另一种可能的解决方案:

    for i in xrange(FLAGS.num_gpus):
        with tf.device('/gpu:%d' % i):
            with tf.variable_scope(name, reuse= i>0):
                 // and do sth