Tensorflow中的右批量归一化功能是什么?

Kim*_*Hee 19 python neural-network deep-learning tensorflow batch-normalization

在tensorflow 1.4中,我发现了两个执行批量规范化的函数,它们看起来相同:

  1. tf.layers.batch_normalization(链接)
  2. tf.contrib.layers.batch_norm(链接)

我应该使用哪种功能?哪一个更稳定?

Max*_*xim 47

只是要添加到列表中,还有几种方法可以在tensorflow中进行批处理规范:

  • tf.nn.batch_normalization是一个低级别的操作.呼叫者负责处理mean和提升variance自己.
  • tf.nn.fused_batch_norm是另一个低级操作,类似于前一个操作.不同之处在于它针对4D输入张量进行了优化,这是卷积神经网络中的常见情况.tf.nn.batch_normalization接受任何等级大于1的张量.
  • tf.layers.batch_normalization是以前的操作的高级包装器.最大的区别在于它负责创建和管理运行均值和方差张量,并在可能的情况下调用快速融合运算.通常,这应该是您的默认选择.
  • tf.contrib.layers.batch_norm是批量规范的早期实现,在它毕业到核心API之前(即tf.layers).建议不要使用它,因为它可能会在将来的版本中删除.
  • tf.nn.batch_norm_with_global_normalization是另一个弃用的操作.目前,代表电话tf.nn.batch_normalization,但未来可能会被删除.
  • 最后,还有keras.layers.BatchNormalizationKeras 层,在张量流后端调用的情况下tf.nn.batch_normalization.


dxf*_*dxf 6

doc所示,tf.contrib是一个包含易失性或实验性代码的贡献模块.当function完成后,它将从该模块中删除.现在有两个,以便与历史版本兼容.

所以,前者tf.layers.batch_normalization是推荐的.