code: def __str__(self):
      ret = ""
      for func, v in self.functions.items():
          if func.startswith("body_function_") or func.startswith(
              "f_body_function_"
          ):
              continue
          elif func.startswith("cond_function_") or func.startswith(
              "f_cond_function_"
          ):
              continue
  
          ret += "Input Function Name: %s\n" % (func)
          ret += "  Inputs:\n"
          for inp in v.inputs:
              ret += "    %s\n" % (inp)
          ret += "  Outputs:\n"
          for out in v.outputs:
              if out.startswith("fake_exit_"):
                  continue
              ret += "    %s\n" % (out)
      return ret
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import copy
  import logging
  from coremltools.converters.mil.mil import types
  from .basic_graph_ops import check_connections, const_determined_nodes
  from .dot_visitor import DotVisitor
  from .naming_utils import escape_fn_name
label_desc: Use image node_id 7 for calling the NetworkEnsemble obj's underlying member method code with example usage: obj.__str__() and returns: ret