在Tensorflow中使用多个GPU时,GPU或CPU上的网络变量是什么?

时间:2017-06-22 17:50:01

标签: tensorflow gpu tensorflow-gpu

我正在使用多个GPU。我发现基本上使用多个GPU是为每个设备声明网络共享权重。

然后,权重实际上位于第一个GPU(/gpu:0)上并与剩余的GPU共享,我确保使用Tensorboard。以下是代码。

with tf.variable_scope(tf.get_variable_scope()):
    for gid in range(num_gpus):
        with tf.device('/gpu:%d' % gid):
            with tf.name_scope('tower%s' % gid) as scope:
                net = Net(...)
                tf.get_variable_scope().reuse_variables()

完全可以吗?或者在Net定义中,我应该在/cpu:0中明确声明每个权重(例如,卷积层权重)吗?

CIFAR10多GPU示例中,它们在CPU中声明权重并与多个GPU共享,如

kernel = _variable_with_weight_decay('weights',shape=[5, 5, 3, 64],...)
biases = _variable_on_cpu('biases', [64], tf.constant_initializer(0.0))
# _variable_with_weight_decay() and _variable_on_cpu explcitly() CPU

为什么?有原因吗?

0 个答案:

没有答案