code: def batched_placeholders_from_specs(specs):
      """Returns placeholders for the given tf.TypeSpecs or feature specs.
  
      Args:
        specs: a Dict[Text, Union[tf.TypeSpec, FeatureSpec]]. Note that the values
          in this dict must be of the same type. Mixing is not allowed.
  
      Returns:
        A dictionary from strings to `Tensor`, `SparseTensor`s, or `RaggedTensor`s.
  
      Raises:
        ValueError: when the TypeSpec or feature spec has an unsupported dtype.
      """
      if not (
          all([_is_feature_spec(s) for s in specs.values()])
          or all([isinstance(s, tf.TypeSpec) for s in specs.values()])
      ):
          raise TypeError(
              "Specs must be all tf.TypeSpecs or feature specs. "
              "Mixing is not allowed. Got: {}".format(specs)
          )
  
      result = {}
      for name, spec in specs.items():
          if isinstance(spec, tf.RaggedTensorSpec):
              # TODO(b/159717195): clean up protected-access
              spec_dtype = (
                  spec._dtype
              )  # pylint: disable=protected-access
          else:
              spec_dtype = spec.dtype
          if spec_dtype not in (tf.int64, tf.float32, tf.string):
              raise ValueError(
                  "Feature {} ({}, {}) had invalid dtype".format(
                      name, spec, type(spec)
                  )
              )
          if isinstance(spec, tf.TypeSpec):
              result[name] = _batched_placeholder_from_typespec(
                  name, spec
              )
          else:
              result[name] = _batched_placeholder_from_feature_spec(
                  name, spec
              )
  
      return result
  
imports: import functools
  import os
  import re
  from typing import Callable, Dict, List, Mapping, Optional, FrozenSet
  from absl import logging
  import numpy
  import pyarrow
  import tensorflow
  from tensorflow_transform import analyzer_nodes
  from tensorflow_transform import annotators
  from tensorflow_transform import common_types
  from tensorflow_transform import graph_context
  from tensorflow_transform import graph_tools
  from tensorflow_transform import schema_inference
  from tensorflow_transform import tf2_utils
  from tensorflow_transform import tf_utils
  from tensorflow_transform.output_wrapper import TFTransformOutput
  from tensorflow_transform.saved import saved_transform_io
  from tensorflow_transform.saved import saved_transform_io_v2
  from tensorflow_transform.tf_metadata import dataset_metadata
  from tensorflow_transform.tf_metadata import metadata_io
  from tensorflow_transform.tf_metadata import schema_utils
  from tfx_bsl.coders import example_coder
  from tfx_bsl.tfxio import tensor_to_arrow
  from tensorflow.python.eager import function
  from tensorflow.python.framework import ops
  from tensorflow_metadata.proto.v0 import schema_pb2
label_desc: Use image node_id 1 for calling a global function with example usage: batched_placeholders_from_specs(specs) and returns: result