TensorFlow批处理归一化实现之间有什么区别



TensorFlow似乎至少实现了3个版本的批次归一化:

  • tf.nn.batch_normalization
  • tf.layers.batch_normalization
  • tf.contrib.layers.batch_norm

这些都有不同的参数和文档。

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

它们实际上是非常不同的。

  • nn.batch_normalization执行基本操作(即简单的归一化(
  • layers.batch_normalization是一个batchnorm"层",即它需要设置可训练的参数等。在一天结束时,它是围绕nn.batch_normalization的包装器。除非您想照顾自己设置变量等,否则这是您想使用的。

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

至于contrib版本,我不能肯定地说,但在我看来,它就像一个实验版本,在"常规" layers ONE中没有一些额外的参数。

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

某些功能围绕代码移动,但是保留了旧版本以保持向后的兼容性,最终将获得多个版本。

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

注意:tf.contrib。*没有固定向后兼容(API可能会在未来版本中更改(。

最新更新