parameters: (metrics, output_names)
docstring: Maps metric functions to model outputs.
  
    Arguments:
        metrics: a list or dict of metric functions.
        output_names: a list of the names (strings) of model outputs.
  
    Returns:
        A list (one entry per model output) of lists of metric functions.
        For instance, if the model has 2 outputs, and for the first output
        we want to compute "binary_accuracy" and "binary_crossentropy",
        and just "binary_accuracy" for the second output,
        the list would look like:
            `[[binary_accuracy, binary_crossentropy], [binary_accuracy]]`
  
    Raises:
        TypeError: if an incorrect type is passed for the `metrics` argument.
docstring_summary: Maps metric functions to model outputs.
docstring_tokens: Maps metric functions to model outputs .
function: def _collect_metrics(metrics, output_names):
    """Maps metric functions to model outputs.
  
    Arguments:
        metrics: a list or dict of metric functions.
        output_names: a list of the names (strings) of model outputs.
  
    Returns:
        A list (one entry per model output) of lists of metric functions.
        For instance, if the model has 2 outputs, and for the first output
        we want to compute "binary_accuracy" and "binary_crossentropy",
        and just "binary_accuracy" for the second output,
        the list would look like:
            `[[binary_accuracy, binary_crossentropy], [binary_accuracy]]`
  
    Raises:
        TypeError: if an incorrect type is passed for the `metrics` argument.
    """
    if not metrics:
      return [[] for _ in output_names]
    if isinstance(metrics, list):
      # we then apply all metrics to all outputs.
      return [copy.copy(metrics) for _ in output_names]
    elif isinstance(metrics, dict):
      nested_metrics = []
      for name in output_names:
        output_metrics = metrics.get(name, [])
        if not isinstance(output_metrics, list):
          output_metrics = [output_metrics]
        nested_metrics.append(output_metrics)
      return nested_metrics
    else:
      raise TypeError('Type of `metrics` argument not understood. '
                      'Expected a list or dictionary, found: ' + str(metrics))
function_tokens: def _collect_metrics ( metrics , output_names ) : if not metrics : return [ [ ] for _ in output_names ] if isinstance ( metrics , list ) : # we then apply all metrics to all outputs. return [ copy . copy ( metrics ) for _ in output_names ] elif isinstance ( metrics , dict ) : nested_metrics = [ ] for name in output_names : output_metrics = metrics . get ( name , [ ] ) if not isinstance ( output_metrics , list ) : output_metrics = [ output_metrics ] nested_metrics . append ( output_metrics ) return nested_metrics else : raise TypeError ( 'Type of `metrics` argument not understood. ' 'Expected a list or dictionary, found: ' + str ( metrics ) )