class_docstr: Export models for inference.
docstr: Create a self-contained inference-only graph and write final graph (in pb format) to disk.
  
  Args:
      filename (str): path to the output graph
      optimize (bool): whether to use TensorFlow's `optimize_for_inference`
          to prune and optimize the graph. This does not work on all types of graphs.
      toco_compatible (bool): See TensorFlow's
          `optimize_for_inference
          <https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/tools/optimize_for_inference.py>`_
          for details. Only available after TF 1.8.
docstr_tok: ["Create","a","self-contained","inference-only","graph","and","write","final","graph","(","in","pb","format",")","to","disk",".","Args",":","filename","(","str",")",":","path","to","the","output","graph","optimize","(","bool",")",":","whether","to","use","TensorFlow","'s","`","optimize_for_inference","`","to","prune","and","optimize","the","graph",".","This","does","not","work","on","all","types","of","graphs",".","toco_compatible","(","bool",")",":","See","TensorFlow's","`","optimize_for_inference","<","https",":","\/\/github.com\/tensorflow\/tensorflow\/blob\/master\/tensorflow\/python\/tools\/optimize_for_inference.py",">","`","_","for","details",".","Only","available","after","TF","1.8","."]
code: def export_compact(
      self, filename, optimize=True, toco_compatible=False
  ):
      """Create a self-contained inference-only graph and write final graph (in pb format) to disk.
  
      Args:
          filename (str): path to the output graph
          optimize (bool): whether to use TensorFlow's `optimize_for_inference`
              to prune and optimize the graph. This does not work on all types of graphs.
          toco_compatible (bool): See TensorFlow's
              `optimize_for_inference
              <https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/tools/optimize_for_inference.py>`_
              for details. Only available after TF 1.8.
      """
      if toco_compatible:
          assert (
              optimize
          ), "toco_compatible is only effective when optimize=True!"
      self.graph = self.config._maybe_create_graph()
      with self.graph.as_default():
          input = PlaceholderInput()
          input.setup(self.config.input_signature)
          with PredictTowerContext(""):
              self.config.tower_func(*input.get_input_tensors())
  
          input_tensors = get_tensors_by_names(self.config.input_names)
          output_tensors = get_tensors_by_names(
              self.config.output_names
          )
  
          self.config.session_init._setup_graph()
          # we cannot use "self.config.session_creator.create_session()" here since it finalizes the graph
          sess = tfv1.Session(
              config=tfv1.ConfigProto(allow_soft_placement=True)
          )
          self.config.session_init._run_init(sess)
  
          dtypes = [n.dtype for n in input_tensors]
  
          # freeze variables to constants
          frozen_graph_def = graph_util.convert_variables_to_constants(
              sess,
              self.graph.as_graph_def(),
              [n.name[:-2] for n in output_tensors],
              variable_names_whitelist=None,
              variable_names_blacklist=None,
          )
  
          # prune unused nodes from graph
          if optimize:
              toco_args = (
                  ()
                  if get_tf_version_tuple() < (1, 8)
                  else (toco_compatible,)
              )
              frozen_graph_def = (
                  optimize_for_inference_lib.optimize_for_inference(
                      frozen_graph_def,
                      [n.name[:-2] for n in input_tensors],
                      [n.name[:-2] for n in output_tensors],
                      [dtype.as_datatype_enum for dtype in dtypes],
                      *toco_args,
                  )
              )
  
          with gfile.FastGFile(filename, "wb") as f:
              f.write(frozen_graph_def.SerializeToString())
              logger.info(
                  "Output graph written to {}.".format(filename)
              )
  
file_path: tensorpack/tensorpack/tfutils/export.py
imports: import tensorflow
  from tensorflow.python.framework import graph_util
  from tensorflow.python.platform import gfile
  from tensorflow.python.tools import optimize_for_inference_lib
  from ..compat import tfv1
  from ..input_source import PlaceholderInput
  from ..tfutils.common import get_tensors_by_names, get_tf_version_tuple
  from ..tfutils.tower import PredictTowerContext
  from ..utils import logger
label_desc: Use image node_id 2 for calling the ModelExporter obj's underlying member method code with example usage: obj.export_compact(filename, optimize, toco_compatible) without return types