code: def apply_norm(x, norm_type, depth, epsilon, layer_collection=None):
    
    if layer_collection is not None:
      assert norm_type == "layer"
    if norm_type == "layer":
      return layer_norm(
          x, filters=depth, epsilon=epsilon, layer_collection=layer_collection)
    if norm_type == "group":
      return group_norm(x, filters=depth, epsilon=epsilon)
    if norm_type == "batch":
      return layers().BatchNormalization(epsilon=epsilon)(x)
    if norm_type == "noam":
      return noam_norm(x, epsilon)
    if norm_type == "l2":
      return l2_norm(x, filters=depth, epsilon=epsilon)
    if norm_type == "none":
      return x
    raise ValueError("Parameter normalizer_fn must be one of: 'layer', 'batch',"
                     "'noam', 'lr', 'none'.")
docs: Apply Normalization.