TensorFlow 批归一化实现之间有什么区别?
What is the difference between the TensorFlow batch normalization implementations?
TensorFlow 似乎实现了至少 3 个版本的批量归一化:
这些都有不同的参数和文档。
它们之间有什么区别,我应该使用哪一个?
全部基于同一篇论文:http://arxiv.org/abs/1502.03167
所以他们应该做同样的事情。
一些函数在代码中移动,但保留旧版本以保持向后兼容性,您最终会得到不止一个版本。
我会推荐使用最简单的一个让你做你的项目(即 tf.nn.batch_normalization)。如果您需要 features/parameters 但未提供,请选择适合您的那个。
注意:
tf.contrib.* 不保证保持向后兼容(api 可能会在未来版本中更改)。
他们其实很不一样。
nn.batch_normalization
执行基本操作(即简单的归一化)
layers.batch_normalization
是一个 batchnorm "layer",即它负责设置可训练参数等。归根结底,它是 nn.batch_normalization
的包装器。很有可能这是您想要使用的,除非您想自己设置变量等。
类似于nn.conv2d
和layers.conv2d
的区别,例如
至于 contrib
版本,我不能肯定地说,但在我看来它像是一个实验版本,带有一些 "regular" layers
中没有的额外参数一.
TensorFlow 似乎实现了至少 3 个版本的批量归一化:
这些都有不同的参数和文档。
它们之间有什么区别,我应该使用哪一个?
全部基于同一篇论文:http://arxiv.org/abs/1502.03167 所以他们应该做同样的事情。
一些函数在代码中移动,但保留旧版本以保持向后兼容性,您最终会得到不止一个版本。
我会推荐使用最简单的一个让你做你的项目(即 tf.nn.batch_normalization)。如果您需要 features/parameters 但未提供,请选择适合您的那个。
注意: tf.contrib.* 不保证保持向后兼容(api 可能会在未来版本中更改)。
他们其实很不一样。
nn.batch_normalization
执行基本操作(即简单的归一化)layers.batch_normalization
是一个 batchnorm "layer",即它负责设置可训练参数等。归根结底,它是nn.batch_normalization
的包装器。很有可能这是您想要使用的,除非您想自己设置变量等。
类似于nn.conv2d
和layers.conv2d
的区别,例如
至于 contrib
版本,我不能肯定地说,但在我看来它像是一个实验版本,带有一些 "regular" layers
中没有的额外参数一.