code: def serialize(
      activation, use_legacy_format=False, custom_objects=None
  ):
      # If the activation function is None, return None
      if activation is None:
          return None
  
      # If the activation function is already a string, return it
      elif isinstance(activation, str):
          return activation
  
      # If the activation function is callable (a function), get its name
      elif callable(activation):
          # Check if the function is in the custom_objects dictionary
          if custom_objects:
              for name, custom_func in custom_objects.items():
                  if custom_func == activation:
                      return name
  
          # Check if the function is in the ACTIVATION_FUNCTIONS list
          if activation.__name__ in ACTIVATION_FUNCTIONS:
              return activation.__name__
  
          # Check if the function is in the TensorFlow frontend activations
          elif (
              activation
              in tf_frontend.keras.activations.__dict__.values()
          ):
              for (
                  name,
                  tf_func,
              ) in tf_frontend.keras.activations.__dict__.items():
                  if tf_func == activation:
                      return name
  
          else:
              raise ValueError(
                  f"Unknown activation function: {activation}."
              )
  
      else:
          raise ValueError(
              f"Could not interpret activation function: {activation}"
          )
  
file_path: ivy/ivy/functional/frontends/tensorflow/keras/activations.py
imports: import ivy
  import ivy.functional.frontends.tensorflow
  from ivy.functional.frontends.tensorflow.func_wrapper import to_ivy_arrays_and_back
  from ivy import with_supported_dtypes
label_desc: Use image node_id 9 for calling a global function with example usage: serialize(activation, use_legacy_format, custom_objects) and returns: None, activation, activation, name, name