class_docstr: Rearrange elements in a tensor from spatial dimensions into depth (channel).
  It is basically the inverse operation of :py:class:`~.iOS15.tensor_transformation.pixel_shuffle`.
  Equivalent to `PyTorch PixelUnshuffle <https://pytorch.org/docs/stable/generated/torch.nn.PixelUnshuffle.html#pixelunshuffle>`_.
  
  Parameters
  ----------
  x: tensor<[n, C, H / f , W / f], T> (Required)
      * Input tensor of rank ``4``.
  
  downscale_factor: const<i32>
      * Factor to decrease spatial resolution by.
  
  Returns
  -------
  tensor<[n, C * f^2, H, W], T>
      * In which ``f`` is the downscale factor.
  
  Attributes
  ----------
  T: fp16, fp32
  
  References
  ----------
  `torch.nn.PixelUnshuffle <https://pytorch.org/docs/stable/generated/torch.nn.PixelUnshuffle.html>`_
code: def type_inference(self):
      x_type = self.x.dtype
      n, c, h, w = self.x.shape
      f = self.downscale_factor.val
      ret_shape = (n, c * f * f, h / f, w / f)
      return types.tensor(x_type, ret_shape)
  
file_path: coremltools/coremltools/converters/mil/mil/ops/defs/iOS16/tensor_transformation.py
imports: import numpy
  from coremltools.converters.mil.mil import types
  from coremltools.converters.mil.mil.input_type import InputSpec, TensorInputType, TupleInputType
  from coremltools.converters.mil.mil.operation import Operation
  from coremltools.converters.mil.mil.ops.defs._op_reqs import register_op
  from coremltools.converters.mil.mil.ops.defs.iOS16 import _IOS16_TARGET
  from coremltools.converters.mil.mil.types.symbolic import any_symbolic
label_desc: Use image node_id 1 for calling the pixel_unshuffle obj's underlying member method code with example usage: obj.type_inference() and returns: types