TensorFlow批量规范化实现之间有什么区别?

时间:2018-02-23 13:48:23

标签: python tensorflow batch-normalization

TensorFlow似乎实现了至少3个版本的批量规范化:

这些都有不同的论点和文档。

这些之间有什么区别,我应该使用哪一个?

2 个答案:

答案 0 :(得分:2)

它们实际上非常不同。

  • nn.batch_normalization执行基本操作(即简单规范化)
  • layers.batch_normalization是一个batchnorm“图层”,即它负责设置可训练的参数等。在一天结束时,它是nn.batch_normalization的包装。这是你想要使用的那个,除非你想自己设置变量等。

例如,它类似于nn.conv2dlayers.conv2d之间的差异。

关于contrib版本,我不能肯定地说,但在我看来,它似乎是一个实验版本,其中有一些额外参数在“常规”layers版本中不可用。

答案 1 :(得分:1)

这些都基于同一篇论文:http://arxiv.org/abs/1502.03167 所以他们应该做同样的事情。

有些函数会在代码中移动,但旧版本会保持向后兼容性,最终会有多个版本。

我建议使用最简单的一个让你做项目(即tf.nn.batch_normalization)。如果您需要未提供的功能/参数,请选择适合您的功能/参数。

注意: tf.contrib。*不保证保持向后兼容(api可能在将来版本中更改)。