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.
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","."]
code: def __init__(self, sym_shape, dtype=None, name=None):
      """
      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.
      """
      if not isinstance(
          sym_shape, (list, tuple, _np.generic, _np.ndarray)
      ):
          raise ValueError(
              "Illegal shape for Placeholder: {}".format(sym_shape)
          )
      self.sym_shape = sym_shape
      self.dtype = dtype
      if self.dtype is None:
          self.dtype = types.float
      sym_type = self.type_inference()
  
      # Globally unique var name for placeholders
      name = "placeholder_" + str(self.__class__.counter)
      self.__class__.counter += 1
  
      # List of output vars (consistent w/ other ops)
      self.outputs = [Var(name, sym_type)]
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import logging
  import numpy
  import sympy
  from .None import types
  from .block import Function
  from .var import Var
  from .types.symbolic import k_used_symbols, k_num_internal_syms
  from coremltools.converters.mil.input_types import InputType
label_desc: Use image node_id 1 to create a new Placeholder object from inherited base classes: object with example: obj = Placeholder(sym_shape, dtype, name)