code: def _get_placeholder_shape_from_tf_graph(self, tfgraph, name):
      error_message = (
          "Unable to determine the shape of input: {}."
          " Please provide its shape during conversion, using \n"
          "'ct.convert(..., inputs=[ct.TensorType(name='{}', shape=(_FILL_ME_) ),])".format(
              name, name
          )
      )
  
      if tfgraph[name].attr.get("shape", None) is not None:
          shape = tfgraph[name].attr["shape"]
  
      elif tfgraph[name].attr.get("_output_shapes", None) is not None:
          shape = tfgraph[name].attr["_output_shapes"][0]
          if shape is None:
              raise ValueError(error_message)
      else:
          raise ValueError(error_message)
  
      return shape
  
imports: from coremltools import _logger
  from coremltools.converters._profile_utils import _profile
  from coremltools.converters.mil._deployment_compatibility import AvailableTarget
  from coremltools.converters.mil.input_types import ImageType, InputType, RangeDim
  from coremltools.converters.mil.input_types import Shape
  from coremltools.converters.mil.input_types import TensorType, _get_shaping_class
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil import Function, Program, get_new_symbol, types
  from coremltools.converters.mil.mil.types.symbolic import is_symbolic
  from coremltools.converters.mil.mil.var import Var
  from .._utils import get_output_names
  from .basic_graph_ops import simple_topsort
  from .convert_utils import convert_graph
label_desc: Use image node_id 2 for calling the TFConverter obj's underlying member method code with example usage: obj._get_placeholder_shape_from_tf_graph(tfgraph, name) and returns: shape