docstr: sym_shape: () or [] for scalar. list, tuple, np.ndarray for tensor. May
  contain Symbol as symbolic shape (but not string).
  
  dtype: types.float or other scalar builtin types.
  allow_rank0_input: A flag that allows the rank 0 placeholder.
docstr_tok: ["sym_shape",":","(",")","or","[","]","for","scalar",".","list",",","tuple",",","np.ndarray","for","tensor",".","May","contain","Symbol","as","symbolic","shape","(","but","not","string",")",".","dtype",":","types.float","or","other","scalar","builtin","types",".","allow_rank0_input",":","A","flag","that","allows","the","rank","0","placeholder","."]
code: def __init__(
      self, sym_shape, dtype=None, name=None, allow_rank0_input=False
  ):
      """
      sym_shape: () or [] for scalar. list, tuple, np.ndarray for tensor. May
      contain Symbol as symbolic shape (but not string).
  
      dtype: types.float or other scalar builtin types.
      allow_rank0_input: A flag that allows the rank 0 placeholder.
      """
      if not isinstance(sym_shape, (list, tuple, _np.ndarray)):
          raise ValueError(
              "Illegal shape for Placeholder: {}".format(sym_shape)
          )
  
      if len(sym_shape) == 0:
          if not allow_rank0_input:
              raise ValueError(
                  "Rank-0 (input {}) is unsupported".format(name)
              )
          else:
              logger.warning(
                  "Rank-0 (input {}) is unsupported in coreml. You might run into error while\
                  running this model".format(
                      name
                  )
              )
  
      for i, d in enumerate(sym_shape):
          if not isinstance(d, (_np.generic, int, Symbol)):
              msg = "Placeholder dim {} in {} is not integer or symbol"
              raise ValueError(msg.format(i, sym_shape))
      self.sym_shape = sym_shape
      self.dtype = dtype
      if self.dtype is None:
          self.dtype = types.float
      self.name = name
      self._infer_output_var()
  
imports: from collections import defaultdict
  from typing import Dict, List
  import numpy
  import sympy
  from coremltools import _logger
  from coremltools.converters.mil._deployment_compatibility import AvailableTarget
  from coremltools.converters.mil.input_types import InputType
  from coremltools.converters.mil.mil.input_type import InternalInputType
  from coremltools.converters.mil.mil.ops.helper import _get_version_of_op
  from coremltools.converters.mil.mil.var import ListVar
  from .None import types
  from .block import Function
  from .operation import Operation
  from .types.symbolic import k_num_internal_syms, k_used_symbols
  from .var import Var
label_desc: Use image node_id 1 to create a new Placeholder object  with example: obj = Placeholder(sym_shape, dtype, name, allow_rank0_input)