【发布时间】:2018-08-03 14:18:50
【问题描述】:
TensorFlow 似乎实现了至少 3 个版本的批量标准化:
这些都有不同的论据和文档。
这些有什么区别,我应该使用哪一个?
【问题讨论】:
标签: python tensorflow batch-normalization
TensorFlow 似乎实现了至少 3 个版本的批量标准化:
这些都有不同的论据和文档。
这些有什么区别,我应该使用哪一个?
【问题讨论】:
标签: python tensorflow batch-normalization
它们实际上非常不同。
nn.batch_normalization 执行基本操作(即简单的归一化)layers.batch_normalization 是一个批处理规范“层”,即它负责设置可训练参数等。归根结底,它是 nn.batch_normalization 的包装器。很有可能这是您想要使用的,除非您想自己设置变量等。这类似于nn.conv2d 和layers.conv2d 之间的区别,例如。
至于contrib 版本,我不能肯定地说,但在我看来,它像是一个实验版本,带有一些“常规”layers 中没有的额外参数。
【讨论】:
都是基于同一篇论文:http://arxiv.org/abs/1502.03167 所以他们应该做同样的事情。
一些函数在代码中移动,但保留旧版本以保持向后兼容性,您最终会得到多个版本。
我建议您使用最简单的方法来完成您的项目(即 tf.nn.batch_normalization)。如果您需要未提供的功能/参数,请选择适合您的功能/参数。
注意: tf.contrib.* 不保证保持向后兼容(该 api 可能会在未来版本中更改)。
【讨论】: