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: TensorFlow 2.x model loader.
  
  Parameters
  ----------
  model: Model created with TensorFlow 2.x
      One of the following model format:
          - TensorFlow tf.keras.Model object or HDF5 (.h5 or .hdf5) file path
          - TensorFlow SavedModel directory path
          - TensorFlow list of concrete functions(s)
  debug: bool, optional. Defaults to False.
      This flag should generally be False except for debugging purposes
      for diagnosing conversion errors. Setting this flag to True will
      cause graph pass errors to be ignored, forcefully returning a
      NetworkEnsemble object.
  kwargs: dict(str, Any), optional
      Dictionary of additional arguments.
docstr_tok: ["TensorFlow","2.x","model","loader",".","Parameters","--","--","--","--","--","model",":","Model","created","with","TensorFlow","2.x","One","of","the","following","model","format",":","-","TensorFlow","tf.keras.Model","object","or","HDF5","(",".h5","or",".hdf5",")","file","path","-","TensorFlow","SavedModel","directory","path","-","TensorFlow","list","of","concrete","functions","(","s",")","debug",":","bool",",","optional",".","Defaults","to","False",".","This","flag","should","generally","be","False","except","for","debugging","purposes","for","diagnosing","conversion","errors",".","Setting","this","flag","to","True","will","cause","graph","pass","errors","to","be","ignored",",","forcefully","returning","a","NetworkEnsemble","object",".","kwargs",":","dict","(","str",",","Any",")",",","optional","Dictionary","of","additional","arguments","."]
code: def __init__(self, model, debug=False, **kwargs):
      """
      TensorFlow 2.x model loader.
  
      Parameters
      ----------
      model: Model created with TensorFlow 2.x
          One of the following model format:
              - TensorFlow tf.keras.Model object or HDF5 (.h5 or .hdf5) file path
              - TensorFlow SavedModel directory path
              - TensorFlow list of concrete functions(s)
      debug: bool, optional. Defaults to False.
          This flag should generally be False except for debugging purposes
          for diagnosing conversion errors. Setting this flag to True will
          cause graph pass errors to be ignored, forcefully returning a
          NetworkEnsemble object.
      kwargs: dict(str, Any), optional
          Dictionary of additional arguments.
      """
      TFLoader.__init__(self, model, debug, **kwargs)
  
      """
          tf_ssa graph passes
          Notes:
          - "flatten_while_loop_namespaces" should be after "constant_propagation"
            as it changes node names which constant propagation pass is relying on
            to perform session.run(), renamed nodes are not understandable for TF.
          """
      self.tfssa_passes = [
          constant_propagation,
          delete_unnecessary_constant_nodes,  # delete_unnecessary_constant_nodes must come right after constant_propagation
          rewrite_control_flow_functions,
          flatten_sub_graph_namespaces,
          remove_variable_nodes,
          fuse_dilation_conv,
      ]
  
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 1 to create a new TF2Loader object from inherited base classes: TFLoader with example: obj = TF2Loader(model, debug)