class_docstr: GroupNorm normalization layer (Wu and He, 2014).
  
  Parameters
  ----------
  ngroups : int
      Numnber of channel groups in GN.
  in_channels : int, default 0
      Number of channels (feature maps) in input data. If not specified,
      initialization will be deferred to the first time `forward` is called
      and `in_channels` will be inferred from the shape of input data.
  axis : int, default 1
      The axis that should be normalized. This is typically the channels
      (C) axis. For instance, after a `Conv2D` layer with `layout='NCHW'`,
      set `axis=1` in `GroupNorm`. If `layout='NHWC'`, then set `axis=3`.
  epsilon: float, default 1e-5
      Small float added to variance to avoid dividing by zero.
  beta_initializer: str or `Initializer`, default 'zeros'
      Initializer for the beta weight.
  gamma_initializer: str or `Initializer`, default 'ones'
      Initializer for the gamma weight.
  scale: bool, default True
      If True, multiply by `gamma`. If False, `gamma` is not used.
  
  Inputs:
      - **data**: input tensor with arbitrary shape.
  
  Outputs:
      - **out**: output tensor with the same shape as `data`.
code: def __repr__(self):
      s = "{name}({content}"
      in_channels = self.gamma.shape[0]
      s += ", ngroups={0}".format(self.ngroups)
      s += ", in_channels={0}".format(
          in_channels if in_channels else None
      )
      s += ")"
      return s.format(
          name=self.__class__.__name__,
          content=", ".join(
              [
                  "=".join([k, v.__repr__()])
                  for k, v in self._kwargs.items()
              ]
          ),
      )
  
file_path: gluon-cv/gluoncv/nn/gn.py
imports: import numpy
  from mxnet.gluon.block import HybridBlock
  from mxnet import autograd
label_desc: Use image node_id 4 for calling the GroupNorm obj's underlying member method code with example usage: obj.__repr__() and returns: s