我已经创建了一个多GPU网络作为cifar10_multigpu
在推理实施中,他们说:
我们使用tf.get_variable()实例化所有变量 tf.variable()为了在多个GPU上共享变量 训练运行。 如果我们只在单个GPU上运行此模型,我们可以简化此模型 功能 通过用tf.variable()。
替换所有实例()
所以我将所有Conv2D层都是一个示例,但是BatchNorm层呢?我如何自己实施?
在这种情况下,我可以使用tensorflow.contrib.slim.batch_norm
吗?该示例不包含有关批处理标准层的任何建议。
只需使用tf.layers.batch_normalization
即可。它还通过tf.get_variable()
创建变量,因此也可以共享。
此外,它与tf.layers.conv*
功能无缝工作。
update : tf.nn.batch_normalization
也很好。这是一个更低级的功能,需要您自己管理mean
和variance
张量。实际上,tf.layers.batch_normalization
是tf.nn.*
函数上的包装器,其中还包括tf.nn.fused_batch_norm
(更快的熔融版本)。