tf.contrib.layers.convolution2d如何不需要显式更新moving_mean和moving_variance?

时间:2017-01-30 00:40:08

标签: machine-learning tensorflow deep-learning

tf.contrib.layers.convolution2d图层如何不要求用户明确更新moving_statistics?

我问的原因是因为我最近要求Why do we need to explicitly update the moving_mean and moving_variance in TensorFlow's Batch normalization in tf.contrib.layers.batch_norm?试图找出如何使用tf.contrib.layers.batch_norm而不必明确更新moving_statistics。

但是,我注意到有一个不同的图层tf.contrib.layers.convolution2d允许您提供规范化图层(比如说normalizer_fn = tf.contrib.layers.batch_norm),但不需要显式更新移动统计信息(正如我在其他问题上的详细说明)。那个黑暗魔法怎么样?即卷积2如何能够跳过(似乎)不可避免的要求?

理想情况下,我想创建一个类似的API /接口,这样我就不需要显式更新moving_stats,并且像这个convolution2d层一样干净。

1 个答案:

答案 0 :(得分:0)

tf.contrib.layers.convolution2d对批量规范化或其统计信息不了解或做任何特别的事情。如果你看一下实现,它所做的就是应用你选择的规范化函数。来自tensorflow/contrib/layers/python/layers/layers.py

if normalizer_fn is not None:
  normalizer_params = normalizer_params or {}
  outputs = normalizer_fn(outputs, **normalizer_params)

因此卷积层与您的问题无关。它只是相关的批量标准化的实现。对于问题的其余部分,请参阅我的回答: Why do we need to explicitly update the moving_mean and moving_variance in TensorFlow's Batch normalization in tf.contrib.layers.batch_norm?

希望有所帮助!