docstr: Test for a variety of shapes and moments.
  
  Batch normalization is expected to work regardless of the position and
  dimensionality of the 'depth' axis/axes.
code: def testBatchNormArbitraryShapes(self):
      """Test for a variety of shapes and moments.
  
      Batch normalization is expected to work regardless of the position and
      dimensionality of the 'depth' axis/axes.
      """
      self._testBatchNormArbitraryShapes((3, 3), (1, 3))
      self._testBatchNormArbitraryShapes((3, 3), (3, 1))
      self._testBatchNormArbitraryShapes((3, 2, 4, 5), (1, 2, 1, 1))
      self._testBatchNormArbitraryShapes(
          (2, 3, 2, 4, 5), (1, 1, 1, 4, 5), atol=0.005
      )
  
imports: import numpy
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gen_nn_ops
  from tensorflow.python.ops import gradient_checker
  from tensorflow.python.ops import gradients_impl
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_impl
  import tensorflow.python.ops.nn_grad
  from tensorflow.python.platform import test
label_desc: Use image node_id 17 for calling the BatchNormalizationTest obj's underlying member method code with example usage: obj.testBatchNormArbitraryShapes() without return types