code: def batch_normalization(
      x, mean, variance, axis, offset=None, scale=None, epsilon=1e-3
  ):
      x = convert_to_tensor(x)
      mean = convert_to_tensor(mean).detach()
      variance = convert_to_tensor(variance).detach()
      if offset is not None:
          offset = convert_to_tensor(offset)
      if scale is not None:
          scale = convert_to_tensor(scale)
  
      def _batch_norm():
          return tnn.batch_norm(
              input=x,
              running_mean=mean,
              running_var=variance,
              weight=scale,
              bias=offset,
              training=False,
              eps=epsilon,
          )
  
      if axis == 1:
          return _batch_norm()
  
      if axis < 0:
          axis = len(x.shape) + axis
  
      order = list(range(len(x.shape)))
      order.pop(axis)
      order.insert(1, axis)
      x = x.permute(order)
  
      x = _batch_norm()
  
      order = list(range(len(x.shape)))
      order.pop(1)
      order.insert(axis, 1)
      return x.permute(order)
  
imports: import torch
  import torch.nn.functional
  import tree
  from keras.backend import standardize_data_format
  from keras.backend import standardize_dtype
  from keras.backend.common.backend_utils import compute_conv_transpose_padding_args_for_torch
  from keras.backend.config import epsilon
  from keras.backend.torch.core import cast
  from keras.backend.torch.core import convert_to_tensor
  from keras.backend.torch.core import get_device
  from keras.backend.torch.numpy import expand_dims
  from keras.backend.torch.numpy import maximum
  from keras.backend.torch.numpy import where
  from keras.utils.argument_validation import standardize_tuple
label_desc: Use image node_id 34 for calling a global function with example usage: batch_normalization(x, mean, variance, axis, offset, scale, epsilon) and returns: x, tnn, _batch_norm