class_docstr: Returns a tensor that has the same values as ``x`` with shape ``shape``.
  ``shape`` must have the same volume (number of elements) as ``x``.
  
  Parameters
  ----------
  x: tensor<*?, T> (Required)
      * A nd tensor or a scalar.
      * If ``x`` is fixed rank (and possibly contains symbolic dimension),
        shape may contain elements that are not positive integers (see below).
      * If ``x`` is variadic rank, shape can only contain positive integers.
  shape: tensor<[K], i32> (Required)
      * A 1D tensor, with elements from the followings:
        * Positive integers.
        * Symbols: All but one symbol in shape must be present in ``x.shape``.
          The new symbol that is not present in ``x.shape`` represent dimension
          such that the total size remains constant. Symbol is illegal
          if ``x`` is variadic rank.
        * -1: ``-1`` introduces a new symbol (see Symbols). Therefore, ``-1`` is
          allowed if all symbols in shape appear in ``x.shape``. ``-1`` is illegal
          if ``x`` is variadic rank.
        * 0: If ``K == rank(x)`` then ``0`` means inheriting from the corresponding
          dimension in ``x.shape``. ``0`` is illegal if ``x`` is variadic rank.
  
  Returns
  -------
  tensor<*?, T>
      * Tensor with shape determined by the input shape.
  
  Attributes
  ----------
  T: fp32
code: def type_inference(self):
      if any_symbolic(self.shape.shape):
          # We can't infer any shape if shape has variable length.
          return types.tensor(
              self.x.dtype, (get_new_variadic_symbol(),)
          )
  
      # shape has fixed length here.
      if self.shape.sym_val is None:
          shape = tuple(
              [get_new_symbol() for _ in range(self.shape.shape[0])]
          )
          return types.tensor(self.x.dtype, shape)
      t, _ = self._get_type_val()
      return t
  
imports: import functools
  import sympy
  from coremltools.converters.mil.mil.types.symbolic import is_symbolic, isscalar, any_symbolic, any_variadic
  from coremltools.converters.mil.mil import get_new_symbol, get_new_variadic_symbol, VALUE, SYMBOL, types
  from ._op_reqs import *
label_desc: Use image node_id 2 for calling the reshape obj's underlying member method code with example usage: obj.type_inference() and returns: t, types, types