code: def pixel_shuffle(x, upscale_factor, data_format="NCHW"):
      input_shape = ivy.shape(x)
      check_equal(
          len(input_shape),
          4,
          message=f"pixel shuffle requires a 4D input, but got input size {input_shape}",
      )
  
      if not isinstance(upscale_factor, int):
          raise TypeError("upscale factor must be int type")
  
      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} "
          )
  
      b = input_shape[0]
      c = input_shape[1] if data_format == "NCHW" else input_shape[3]
      h = input_shape[2] if data_format == "NCHW" else input_shape[1]
      w = input_shape[3] if data_format == "NCHW" else input_shape[2]
  
      upscale_factor_squared = upscale_factor**2
  
      check_equal(
          c % upscale_factor_squared,
          0,
          message=(
              "pixel shuffle expects input channel to be divisible by square of upscale"
              f" factor, but got input with sizes {input_shape}, upscale"
              f" factor={upscale_factor}, and self.size(1)={c}, is not divisible by"
              f" {upscale_factor_squared}"
          ),
          as_array=False,
      )
  
      oc = int(c / upscale_factor_squared)
      oh = h * upscale_factor
      ow = w * upscale_factor
  
      if data_format == "NCHW":
          input_reshaped = ivy.reshape(
              x, (b, oc, upscale_factor, upscale_factor, h, w)
          )
      else:
          input_reshaped = ivy.reshape(
              x, (b, h, w, upscale_factor, upscale_factor, oc)
          )
  
      if data_format == "NCHW":
          return ivy.reshape(
              ivy.permute_dims(input_reshaped, (0, 1, 4, 2, 5, 3)),
              (b, oc, oh, ow),
          )
      return ivy.reshape(
          ivy.permute_dims(input_reshaped, (0, 1, 4, 2, 5, 3)),
          (b, oh, ow, oc),
      )
  
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 3 for calling a global function with example usage: pixel_shuffle(x, upscale_factor, data_format) and returns: ivy, ivy