code: def _get_custom_layer_names(spec):
      """
  
      Returns a list of className fields which appear in the given protobuf spec
  
      Parameters
      ----------
      spec: mlmodel spec
  
      Returns
      -------
  
      set(str) A set of unique className fields of custom layers that appear in the model.
  
      """
      layers = _get_nn_layers(spec)
      layers_out = set()
      for layer in layers:
          if layer.WhichOneof("layer") == "custom":
              layers_out.add(layer.custom.className)
  
      return layers_out
  
imports: from collections.abc import Iterable
  from functools import lru_cache
  import math
  import os
  import shutil
  import subprocess
  import sys
  import tempfile
  from typing import Optional, Union
  import warnings
  import numpy
  import coremltools
  from coremltools import ComputeUnit
  from coremltools.converters.mil.mil.passes.defs.preprocess import NameSanitizer
  from coremltools.proto import Model_pb2
  import coremltools.proto.MIL_pb2
  from .._deps import _HAS_SCIPY
label_desc: Use image node_id 21 for calling a global function with example usage: _get_custom_layer_names(spec) and returns: layers_out