code: def create_eager_metrics_internal(metric_fns,
                                    weights_fn=common_layers.weights_all):
    
    tfe_metrics = {}
  
    for name in metric_fns:
      tfe_metrics[name] = tfe.metrics.Mean(name=name)
  
    def metric_accum(predictions, targets):
      for name, metric_fn in metric_fns.items():
        val, weight = metric_fn(predictions, targets,
                                weights_fn=weights_fn)
        tfe_metrics[name](np.squeeze(val), np.squeeze(weight))
  
    def metric_means():
      avgs = {}
      for name in metric_fns:
        avgs[name] = tfe_metrics[name].result().numpy()
      return avgs
  
    return metric_accum, metric_means
docs: Create metrics accumulators and averager for Eager mode.
  
    Args:
      metric_fns: dict<metric name, metric function>
      weights_fn: function that takes labels and returns a weights mask. Defaults
        to weights of all 1, i.e. common_layers.weights_all. Use
        common_layers.weights_nonzero if labels have 0-padding.
  
    Returns:
      (accum_fn(predictions, targets) => None,
       result_fn() => dict<str metric_name, float avg_val>