code: def batch_norm(inputs, prev_modules, attrs, outputs):
      # extract attributes
      epsilon = float(attrs.get("epsilon", 1e-05))
      momentum = float(attrs.get("momentum", 0.9))
      # extract inputs
      _, data_tensor_shape = inputs[0]
      scale_tensor_val, _ = inputs[1]
      bias_tensor_val, _ = inputs[2]
      mean_tensor_val, _ = inputs[3]
      var_tensor_val, _ = inputs[4]
      # calc output tensor shape
      out_tensor_shape = data_tensor_shape
      # create module node
      n_output = int(data_tensor_shape[1])
  
      temp_module = SpatialBatchNormalization(
          n_output=n_output,
          eps=epsilon,
          momentum=momentum,
          init_weight=scale_tensor_val,
          init_bias=bias_tensor_val,
      )
      if mean_tensor_val is not None:
          temp_module.set_running_mean(mean_tensor_val)
      if var_tensor_val is not None:
          temp_module.set_running_std(var_tensor_val)
      module = temp_module(prev_modules[0])
      return module, [out_tensor_shape]
  
file_path: BigDL/python/dllib/src/bigdl/dllib/contrib/onnx/ops_converter.py
imports: from bigdl.dllib.nn.layer import SpatialAveragePooling, SpatialBatchNormalization
  from bigdl.dllib.nn.layer import SpatialConvolution, SpatialMaxPooling, JoinTable
  from bigdl.dllib.nn.layer import ReLU, SoftMax, CAddTable, Unsqueeze
  from bigdl.dllib.nn.onnx.layer import Constant, Gather, Gemm, Shape, Reshape
  from .converter_utils import *
label_desc: Use image node_id 2 for calling a global function with example usage: batch_norm(inputs, prev_modules, attrs, outputs) and returns: module,  list