code: def pixel_unshuffle(x, downscale_factor, data_format="NCHW"):
      if len(ivy.shape(x)) != 4:
          raise ValueError(
              "Input x should be 4D tensor, but received x with the shape of"
              f" {ivy.shape(x)}"
          )
  
      if not isinstance(downscale_factor, int):
          raise TypeError("Downscale factor must be int type")
  
      if downscale_factor <= 0:
          raise ValueError("Downscale factor must be positive")
  
      if data_format not in ["NCHW", "NHWC"]:
          raise ValueError(
              "Attr(data_format) should be 'NCHW' or 'NHWC'.But receive"
              f" Attr(data_format): {data_format} "
          )
  
      if data_format == "NCHW":
          b, c, h, w = ivy.shape(x)
          oc = c * downscale_factor**2
          oh = h // downscale_factor
          ow = w // downscale_factor
  
          x = ivy.reshape(
              x, (b, c, oh, downscale_factor, ow, downscale_factor)
          )
          x = ivy.permute_dims(x, (0, 1, 3, 5, 2, 4))
          x = ivy.reshape(x, (b, oc, oh, ow))
      else:
          b, h, w, c = ivy.shape(x)
          oc = c * downscale_factor**2
          oh = h // downscale_factor
          ow = w // downscale_factor
  
          x = ivy.reshape(
              x, (b, downscale_factor, oh, downscale_factor, ow, c)
          )
          x = ivy.permute_dims(x, (0, 1, 3, 5, 2, 4))
          x = ivy.reshape(x, (b, oh, ow, oc))
      return x
  
file_path: ivy/ivy/functional/frontends/paddle/nn/functional/vision.py
imports: import ivy
  from ivy.func_wrapper import with_unsupported_dtypes, with_supported_dtypes
  from ivy.functional.frontends.paddle.func_wrapper import to_ivy_arrays_and_back
  from ivy.utils.assertions import check_equal
label_desc: Use image node_id 4 for calling a global function with example usage: pixel_unshuffle(x, downscale_factor, data_format) and returns: x