code: def test_bn(self):  # type: () -> None
      scale = from_array(_random_array((3,)), name="scale")
      bias = from_array(_random_array((3,)), name="bias")
      mean = from_array(_random_array((3,)), name="mean")
      var = from_array(_random_array((3,)), name="var")
  
      epsilon = 1e-5
      momentum = 0.001
  
      op_types = ["BatchNormalization", "SpatialBN"]
      for op_type in op_types:
          _test_single_node(
              "BatchNormalization",
              [(1, 3, 224, 224)],
              [(1, 3, 224, 224)],
              initializer=[scale, bias, mean, var],
              epsilon=epsilon,
              momentum=momentum,
          )
  
          # epsilon by default
          _test_single_node(
              "BatchNormalization",
              [(1, 3, 224, 224)],
              [(1, 3, 224, 224)],
              initializer=[scale, bias, mean, var],
              # epsilon=epsilon,
              momentum=momentum,
          )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  import unittest
  import numpy
  from coremltools._deps import _HAS_ONNX, MSG_ONNX_NOT_FOUND
  from typing import Text
  from coremltools.models.utils import _macos_version
label_desc: Use image node_id 6 for calling the SingleOperatorTest obj's underlying member method code with example usage: obj.test_bn() without return types