在Tensorflow中使用多个GPU训练模型时如何使用batch_normalization?

时间:2019-07-13 22:16:58

标签: python tensorflow multi-gpu batch-normalization

我遵循了CIFAR10 multi-gpu的示例,现在我正在尝试使我的程序与批处理规范化层一起使用。

我研究了https://github.com/tensorflow/tensorflow/issues/7439How do I use Batch Normalization in a multi-gpu setting in TensorFlow?

我不打算做任何“幻想”,因此,出于我的目的,仅使用单个塔的均值和方差完全可以。

with tf.variable_scope(tf.get_variable_scope()):
    for i in range(num_gpu):
        with tf.device("/gpu:{}".format(i)):
            with tf.name_scope("gpu_{}".format(i)) as scope:

               loss = tower_loss(scope...)

               tf.get_variable_scope().reuse_variables()

               batchnorm_updates = tf.get_collection(
                     tf.GraphKeys.UPDATE_OPS, scope)

               grads = opt.compute_grads(loss)

               tower_grads.append(grads)

我得到的当前错误是“ ValueError:变量batch_normalization / gamma不存在,或者不是使用tf.get_variable()创建的。您是要在VarScope中设置复用= tf.AUTO_REUSE吗?”

但是,当我设置了reuse = tf.AUTO_REUSE时,出现了与batch_size有关的错误。

0 个答案:

没有答案