code: def __init__(
      self,
      num_features,
      groups=32,
      group_size=None,
      apply_act=True,
      eps=1e-5,
      **_,
  ):
      super().__init__()
      self.apply_act = apply_act  # apply activation (non-linearity)
      if group_size:
          assert num_features % group_size == 0
          self.groups = num_features // group_size
      else:
          self.groups = groups
      self.eps = eps
      self.weight = nn.Parameter(torch.ones(num_features))
      self.bias = nn.Parameter(torch.zeros(num_features))
      self.v = (
          nn.Parameter(torch.ones(num_features)) if apply_act else None
      )
      self.reset_parameters()
  
imports: from typing import Sequence, Union
  import torch
  import torch.nn
  import torch.nn.functional
  from .create_act import create_act_layer
  from .trace_utils import _assert
label_desc: Use image node_id 1 to create a new EvoNorm2dS0 object from inherited base classes: nn with example: obj = EvoNorm2dS0(num_features, groups, group_size, apply_act, eps)