class_docstr: Returns a 1-dimensional tensor with the shape of the input complex tensor.
  
  Parameters
  ----------
  x: tensor<[*?], T> (Required)
      * Input tensor.
  
  Returns
  -------
  tensor<K, i32>
      * Shape of the input tensor.
      * ``K = x.real.rank``.
  
  Attributes
  ----------
  T: complex64
class_docstr_tok: ["Returns","a","1-dimensional","tensor","with","the","shape","of","the","input","complex","tensor",".","Parameters","--","--","--","--","--","x",":","tensor","<","[","*","?","]",",","T",">","(","Required",")","*","Input","tensor",".","Returns","--","--","--","-","tensor","<","K",",","i32",">","*","Shape","of","the","input","tensor",".","*","``","K","=","x.real.rank","``",".","Attributes","--","--","--","--","--","T",":","complex64"]
code: def value_inference(self):
      if any_symbolic(self.x.shape):
          # convert elements in shape to int32
          res = [
              x if is_symbolic(x) else np.int32(x) for x in self.x.shape
          ]
          return np.array(res)
      else:
          return np.array(self.x.shape).astype(np.int32)
  
imports: from typing import Optional, Tuple
  import numpy
  from coremltools.converters.mil.mil import Operation, types
  from coremltools.converters.mil.mil.input_type import DefaultInputs, InputSpec, TensorInputType
  from coremltools.converters.mil.mil.ops.registry import SSAOpRegistry
  from coremltools.converters.mil.mil.types.symbolic import any_symbolic, is_symbolic
  from coremltools.converters.mil.mil.types.type_mapping import infer_complex_dtype, infer_fp_dtype_from_complex
  from coremltools.converters.mil.mil.var import ComplexVar, Var
label_desc: Use image node_id 2 for calling the complex_shape obj's underlying member method code with example usage: obj.value_inference() and returns: np, np