class_docstr: Normalizes input tensor ``x`` by ``mean`` and ``variance``, and optionally applies a scale ``gamma`` and offset ``beta``.
  ``mean``, ``variance``, ``gamma``, ``beta`` must be 1D tensors with length equal to the second axis ("depth" or "channel" dimension) of ``x``.
  
  Parameters
  ----------
  x: tensor<[n,C,*D], T> (Required)
      * ``3 <= rank <= 4``.
      * ``*D`` refers to the spatial dimensions, ``1 <= rank(*D) <= 2``.
      * ``n`` is the batch dimension
  mean: const tensor<[C], T> (Required)
  variance: const tensor<[C], T> (Required)
  gamma: const tensor<[C], T> (Optional)
      * Default to all ``1s``.
      * Optional scale applied to normalized tensor.
  beta: const tensor<[C], T> (Optional)
      * Default to all ``0s``.
      * Optional offset applied to normalized tensor.
  epsilon: const f32 (Optional)
      * Default to ``1e-5``.
  
  Returns
  -------
  tensor<[n,C,*D], T>
      * output tensor has the same shape and type as the input ``x``.
  
  Attributes
  ----------
  T: fp32
code: def __init__(self, **kwargs):
      super(batch_norm, self).__init__(**kwargs)
  
imports: from ._op_reqs import *
label_desc: Use image node_id 1 to create a new batch_norm object from inherited base classes: Operation with example: obj = batch_norm()