class_docstr: There are the steps how the TF2Loader loads and converts the TF2 model
  1. Get the concrete functions from the Keras model (only 1 concrete function is supported now)
  2. Get the tensorflow graphdef from the concrete function by doing
     (a) calling tensorflow's convert_variables_to_constants_v2 API to freeze variables into constants
     (b) run grappler optimizations on the graphdef ("constfold", "dependency", "debug_stripper")
  3. Extract sub graph based on "outputs"
  4. Construct tfssa IR from graphdef
  5. Run tfssa graph passes
  6. Convert tfssa to program by TF2Converter
class_docstr_tok: ["There","are","the","steps","how","the","TF2Loader","loads","and","converts","the","TF2","model","1",".","Get","the","concrete","functions","from","the","Keras","model","(","only","1","concrete","function","is","supported","now",")","2",".","Get","the","tensorflow","graphdef","from","the","concrete","function","by","doing","(","a",")","calling","tensorflow","'s","convert_variables_to_constants_v2","API","to","freeze","variables","into","constants","(","b",")","run","grappler","optimizations","on","the","graphdef","(","``","constfold","''",",","``","dependency","''",",","``","debug_stripper","''",")","3",".","Extract","sub","graph","based","on","``","outputs","''","4",".","Construct","tfssa","IR","from","graphdef","5",".","Run","tfssa","graph","passes","6",".","Convert","tfssa","to","program","by","TF2Converter"]
docstr: Overwrites TFLoader._tf_ssa_from_graph_def()
docstr_tok: ["Overwrites","TFLoader._tf_ssa_from_graph_def","(",")"]
code: def _tf_ssa_from_graph_def(self, fn_name="main"):
      """Overwrites TFLoader._tf_ssa_from_graph_def()"""
      with _tf.Graph().as_default() as tf_graph:
          _tf.graph_util.import_graph_def(self._graph_def, name="")
  
      # sub-graphs' input shapes are required for extracting sub-graphs
      sg_input_shapes = self._populate_sub_graph_input_shapes(
          tf_graph, tf_graph._functions
      )
  
      # get graph_dict and sub-graphs' inputs / outputs
      graph_dict, inputs, outputs, ret = self._dict_from_graph_def(
          tf_graph, fn_name, sg_input_shapes
      )
  
      tf_ssa = NetworkEnsemble()
      for name, graph in graph_dict.items():
          tensor_array_resource_removal(graph)
          graph = insert_get_tuple(graph)
          graph = fill_outputs(graph)
          if (
              name == "main"
          ):  # skip for sub-graphs as input can be also output
              delete_disconnected_nodes(graph)
          tf_ssa.functions[name] = SSAFunction(
              graph,
              inputs=inputs[name],
              outputs=outputs[name],
              ret=ret[name],
          )
  
      return tf_ssa
  
imports: import os.path
  from distutils.version import StrictVersion
  import tensorflow
  from tensorflow.lite.python.util import get_grappler_config
  from tensorflow.lite.python.util import run_graph_optimizations
  from tensorflow.python.eager import context
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2
  from tensorflow.python.framework.function_def_to_graph import function_def_to_graph
  from tensorflow.python.keras.saving import saving_utils
  from tqdm import tqdm
  from coremltools import _logger
  from coremltools._deps import _get_version
  from coremltools.converters.mil.frontend.tensorflow2.tf_graph_pass import flatten_sub_graph_namespaces, rewrite_control_flow_functions
  from coremltools.converters.mil.frontend.tensorflow.basic_graph_ops import fill_outputs
  from coremltools.converters.mil.frontend.tensorflow.load import TFLoader
  from coremltools.converters.mil.frontend.tensorflow.parsed_tf_node import ParsedTFNode
  from coremltools.converters.mil.frontend.tensorflow.tf_graph_pass import constant_propagation, delete_disconnected_nodes, delete_unnecessary_constant_nodes, fuse_dilation_conv, insert_get_tuple, remove_variable_nodes, tensor_array_resource_removal
  from coremltools.converters.mil.frontend.tensorflow.tfssa import NetworkEnsemble, SSAFunction
  from coremltools.converters.mil.input_types import TensorType
  from .converter import TF2Converter
label_desc: Use image node_id 4 for calling the TF2Loader obj's underlying member method code with example usage: obj._tf_ssa_from_graph_def(fn_name) and returns: tf_ssa