code: def _get_shape(x, out_type=tf.int32):
      # Return the shape of a Tensor or a SparseTensor as an np.array if its shape
      # is known statically. Otherwise return a Tensor representing the shape.
      if tensorshape_util.is_fully_defined(x.shape):
          return np.array(
              tensorshape_util.as_list(x.shape),
              dtype=dtype_util.as_numpy_dtype(out_type),
          )
      return tf.shape(x, out_type=out_type)
  
imports: import numpy
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import custom_gradient
  from tensorflow_probability.python.internal import distribution_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow_probability.python.math import generic
label_desc: Use image node_id 16 for calling a global function with example usage: _get_shape(x, out_type) and returns: tf, np