code: def compile_args_from_training_config(
      training_config, custom_objects=None
  ):
      """Return model.compile arguments from training config."""
      if custom_objects is None:
          custom_objects = {}
  
      with object_registration.CustomObjectScope(custom_objects):
          optimizer_config = training_config["optimizer_config"]
          optimizer = optimizers.deserialize(optimizer_config)
          # Ensure backwards compatibility for optimizers in legacy H5 files
          optimizer = _resolve_compile_arguments_compat(
              optimizer, optimizer_config, optimizers
          )
  
          # Recover losses.
          loss = None
          loss_config = training_config.get("loss", None)
          if loss_config is not None:
              loss = _deserialize_nested_config(
                  losses.deserialize, loss_config
              )
              # Ensure backwards compatibility for losses in legacy H5 files
              loss = _resolve_compile_arguments_compat(
                  loss, loss_config, losses
              )
  
          # Recover metrics.
          metrics = None
          metrics_config = training_config.get("metrics", None)
          if metrics_config is not None:
              metrics = _deserialize_nested_config(
                  _deserialize_metric, metrics_config
              )
              # Ensure backwards compatibility for metrics in legacy H5 files
              metrics = _resolve_compile_arguments_compat(
                  metrics, metrics_config, metrics_module
              )
  
          # Recover weighted metrics.
          weighted_metrics = None
          weighted_metrics_config = training_config.get(
              "weighted_metrics", None
          )
          if weighted_metrics_config is not None:
              weighted_metrics = _deserialize_nested_config(
                  _deserialize_metric, weighted_metrics_config
              )
  
          loss_weights = training_config["loss_weights"]
  
      return dict(
          optimizer=optimizer,
          loss=loss,
          metrics=metrics,
          weighted_metrics=weighted_metrics,
          loss_weights=loss_weights,
      )
  
imports: import json
  import threading
  import tree
  from absl import logging
  from keras import backend
  from keras import layers
  from keras import losses
  from keras import metrics
  from keras import models
  from keras import optimizers
  from keras.legacy.saving import serialization
  from keras.saving import object_registration
label_desc: Use image node_id 3 for calling a global function with example usage: compile_args_from_training_config(training_config, custom_objects) and returns: dict