code: def SmartInit(obj, *, ignore_mismatch=False):
      """
      Create a :class:`SessionInit` to be loaded to a session,
      automatically from any supported objects, with some smart heuristics.
      The object can be:
  
      + A TF checkpoint
      + A dict of numpy arrays
      + A npz file, to be interpreted as a dict
      + An empty string or None, in which case the sessinit will be a no-op
      + A list of supported objects, to be initialized one by one
  
      Args:
          obj: a supported object
          ignore_mismatch (bool): ignore failures when the value and the
              variable does not match in their shapes.
              If False, it will throw exception on such errors.
              If True, it will only print a warning.
  
      Returns:
          SessionInit:
      """
      if not obj:
          return JustCurrentSession()
      if isinstance(obj, list):
          return ChainInit(
              [
                  SmartInit(x, ignore_mismatch=ignore_mismatch)
                  for x in obj
              ]
          )
      if isinstance(obj, six.string_types):
          obj = os.path.expanduser(obj)
          if obj.endswith(".npy") or obj.endswith(".npz"):
              assert tf.gfile.Exists(
                  obj
              ), "File {} does not exist!".format(obj)
              filename = obj
              logger.info(
                  "Loading dictionary from {} ...".format(filename)
              )
              if filename.endswith(".npy"):
                  obj = np.load(filename, encoding="latin1").item()
              elif filename.endswith(".npz"):
                  obj = dict(np.load(filename))
          elif len(tf.gfile.Glob(obj + "*")):
              # Assume to be a TF checkpoint.
              # A TF checkpoint must be a prefix of an actual file.
              return (
                  SaverRestoreRelaxed
                  if ignore_mismatch
                  else SaverRestore
              )(obj)
          else:
              raise ValueError("Invalid argument to SmartInit: " + obj)
  
      if isinstance(obj, dict):
          return DictRestore(obj, ignore_mismatch=ignore_mismatch)
      raise ValueError("Invalid argument to SmartInit: " + type(obj))
  
imports: import os
  import numpy
  import six
  from ..compat import tfv1
  from ..utils import logger
  from .common import get_op_tensor_name
  from .varmanip import SessionUpdate, get_checkpoint_path, get_savename_from_varname, is_training_name
label_desc: Use image node_id 1 for calling a global function with example usage: SmartInit(obj) and returns: JustCurrentSession, ChainInit, DictRestore, unknown