code: def group_norm(
      data, gamma, beta, num_groups=1, eps=1e-3, output_mean_var=False
  ):
      r"""Group normalization.
  
      The input channels are separated into ``num_groups`` groups,
      each containing ``num_channels / num_groups`` channels.
      The mean and standard-deviation are calculated separately over the each group.
  
      .. math::
  
        data = data.reshape((N, num_groups, C // num_groups, ...))
        out = \frac{data - mean(data, axis)}{\sqrt{var(data, axis) + \epsilon}} * gamma + beta
  
      Both ``gamma`` and ``beta`` are learnable parameters.
  
  
  
      Defined in ../src/operator/nn/group_norm.cc:L78
  
      Parameters
      ----------
      data : NDArray
          Input data
      gamma : NDArray
          gamma array
      beta : NDArray
          beta array
      num_groups : int, optional, default='1'
          Total number of groups.
      eps : float, optional, default=9.99999975e-06
          An `epsilon` parameter to prevent division by 0.
      output_mean_var : boolean, optional, default=0
          Output the mean and std calculated along the given axis.
  
      Returns
      -------
      out : NDArray or list of NDArrays
          The output of this function.
      """
      out = _api_internal.group_norm(
          data, gamma, beta, num_groups, eps, output_mean_var
      )
      if isinstance(out, NDArrayBase):
          return out
      return list(out)
  
imports: import numpy
  from .._internal import NDArrayBase
  from .None import _api_internal
  from ...util import set_module
  from ..ndarray import get_dtype_name
label_desc: Use image node_id 22 for calling a global function with example usage: group_norm(data, gamma, beta, num_groups, eps, output_mean_var) and returns: list, out