title: Tensorflow `tf.layers.batch_normalization` doesn't add update ops to `tf.GraphKeys.UPDATE_OPS`
body: <p>The following code (copy/paste runnable) illustrates using <code>tf.layers.batch_normalization</code>. </p>
  
  <pre class="lang-py prettyprint-override"><code>import tensorflow as tf
  bn = tf.layers.batch_normalization(tf.constant([0.0]))
  print(tf.get_collection(tf.GraphKeys.UPDATE_OPS))
  
  &gt; []     # UPDATE_OPS collection is empty
  </code></pre>
  
  <p>Using TF 1.5, the documentation (quoted below) clearly states that <strong>UPDATE_OPS should not be empty</strong> in this case (<a href="https://www.tensorflow.org/api_docs/python/tf/layers/batch_normalization" rel="noreferrer">https://www.tensorflow.org/api_docs/python/tf/layers/batch_normalization</a>):</p>
  
  <blockquote>
    <p>Note: when training, the moving_mean and moving_variance need to be
    updated. By default the update ops are placed in
    <code>tf.GraphKeys.UPDATE_OPS</code>, so they need to be added as a dependency to
    the train_op. For example:</p>
  </blockquote>
  
  <pre><code>update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
  with tf.control_dependencies(update_ops):
      train_op = optimizer.minimize(loss)
  </code></pre>