code: def __init__(
      self,
      num_groups: int,
      num_channels: int,
      eps: float = 1e-5,
      affine: bool = True,
  ):
      self.num_groups, self.num_channels, self.eps = (
          num_groups,
          num_channels,
          eps,
      )
      self.weight: Optional[Tensor] = (
          Tensor.ones(num_channels) if affine else None
      )
      self.bias: Optional[Tensor] = (
          Tensor.zeros(num_channels) if affine else None
      )
  
imports: import math
  from typing import Optional, Union, Tuple, cast
  from tinygrad.tensor import Tensor
  from tinygrad.helpers import prod
  from tinygrad.nn import optim, state
label_desc: Use image node_id 1 to create a new GroupNorm object  with example: obj = GroupNorm(num_groups, num_channels, eps, affine)