Python 什么是Tensorflow中正确的批处理规范化函数?
在tensorflow 1.4中,我发现了两个执行批处理规范化的函数,它们看起来相同:Python 什么是Tensorflow中正确的批处理规范化函数?,python,tensorflow,neural-network,deep-learning,batch-normalization,Python,Tensorflow,Neural Network,Deep Learning,Batch Normalization,在tensorflow 1.4中,我发现了两个执行批处理规范化的函数,它们看起来相同: tf.layers.batch\u规范化() tf.contrib.layers.batch\u norm() 我应该使用哪个函数?哪个更稳定?如中所示,tf.contrib是一个包含易失性或实验性代码的贡献模块。当功能完成时将从此模块中删除。现在有两种,为了与历史版本兼容 因此,建议使用前一种tf.layers.batch\u normalization。只需添加到列表中,在tensorflow中还有几种方
tf.layers.batch\u规范化
()tf.contrib.layers.batch\u norm
()tf.contrib
是一个包含易失性或实验性代码的贡献模块。当功能完成时
将从此模块中删除。现在有两种,为了与历史版本兼容
因此,建议使用前一种
tf.layers.batch\u normalization
。只需添加到列表中,在tensorflow中还有几种方法可以执行批处理规范:
- 是一个低级op。调用者负责处理
和均值
张量本身方差
- 是另一个低级操作,与前一个类似。不同之处在于它针对4D输入张量进行了优化,这是卷积神经网络中的常见情况<代码>tf.nn.batch_归一化接受任何秩大于1的张量
- 是对以前的ops的高级包装。最大的区别在于它负责创建和管理运行的均值和方差张量,并在可能的情况下调用快速融合运算。通常,这应该是您的默认选择
- 是批处理规范的早期实现,在它升级到核心API之前(即,
)。不建议使用它,因为在将来的版本中可能会删除它tf.layers
- 是另一个不推荐使用的操作。目前,将调用委托给
,但将来可能会放弃tf.nn.batch\u normalization
- 最后,还有Keras层,对于tensorflow后端,它调用
tf.nn.batch\u normalization
training
属性。对于未来的读者,本文很好地介绍了如何手动管理均值/方差: