【问题标题】:What is the difference between the TensorFlow batch normalization implementations?TensorFlow 批量标准化实现之间有什么区别?
【发布时间】:2018-08-03 14:18:50
【问题描述】:

TensorFlow 似乎实现了至少 3 个版本的批量标准化:

这些都有不同的论据和文档。

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

【问题讨论】:

    标签: python tensorflow batch-normalization


    【解决方案1】:

    它们实际上非常不同。

    • nn.batch_normalization 执行基本操作(即简单的归一化)
    • layers.batch_normalization 是一个批处理规范“层”,即它负责设置可训练参数等。归根结底,它是 nn.batch_normalization 的包装器。很有可能这是您想要使用的,除非您想自己设置变量等。

    这类似于nn.conv2dlayers.conv2d 之间的区别,例如。

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

    【讨论】:

      【解决方案2】:

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

      一些函数在代码中移动,但保留旧版本以保持向后兼容性,您最终会得到多个版本。

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

      注意: tf.contrib.* 不保证保持向后兼容(该 api 可能会在未来版本中更改)。

      【讨论】:

        猜你喜欢
        • 2018-11-27
        • 2016-03-03
        • 2017-03-03
        • 1970-01-01
        • 2018-06-05
        • 2018-04-09
        • 2017-10-20
        • 2018-05-08
        • 1970-01-01
        相关资源
        最近更新 更多