code: def choose_norm(norm_type, channel_size, shape="BDT"):
      """The input of normalization will be (M, C, K), where M is batch size.
  
      C is channel size and K is sequence length.
      """
      if norm_type == "gLN":
          return GlobalLayerNorm(channel_size, shape=shape)
      elif norm_type == "cLN":
          return ChannelwiseLayerNorm(channel_size, shape=shape)
      elif norm_type == "BN":
          # Given input (M, C, K), nn.BatchNorm1d(C) will accumulate statics
          # along M and K, so this BN usage is right.
          return nn.BatchNorm1d(channel_size)
      elif norm_type == "GN":
          return nn.GroupNorm(1, channel_size, eps=1e-8)
      else:
          raise ValueError("Unsupported normalization type")
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from espnet2.enh.layers.adapt_layers import make_adapt_layer
label_desc: Use image node_id 2 for calling a global function with example usage: choose_norm(norm_type, channel_size, shape) and returns: GlobalLayerNorm, ChannelwiseLayerNorm, nn, nn