code: def pretty_print_counters(counters):
    
    totals = collections.defaultdict(int)
    for (name, val) in counters:
      prefixes = [name[:i] for i in xrange(len(name)) if name[i] == "/"] + [name]
      for p in prefixes:
        totals[p] += val
    parts = []
    for name, val in sorted(six.iteritems(totals)):
      parts.append(" " * name.count("/") + "%s: %.3g" % (name, val))
    return "\n".join(parts)
docs: print counters hierarchically.
  
    Each counter is a pair of a string and a number.
    The string can have slashes, meaning that the number also counts towards
    each prefix.  e.g.  "parameters/trainable" counts towards both "parameters"
    and "parameters/trainable".
  
    Args:
      counters: a list of (string, number) pairs
  
    Returns:
      a string