code: def pixel_shuffle(input, upscale_factor):
      input_shape = ivy.shape(input)
  
      ivy.utils.assertions.check_equal(
          ivy.get_num_dims(input),
          4,
          message=(
              "pixel_shuffle expects 4D input, but got input with sizes"
              f" {str(input_shape)}"
          ),
          as_array=False,
      )
      b = input_shape[0]
      c = input_shape[1]
      h = input_shape[2]
      w = input_shape[3]
      upscale_factor_squared = upscale_factor * upscale_factor
      ivy.utils.assertions.check_equal(
          c % upscale_factor_squared,
          0,
          message="pixel_shuffle expects input channel to be divisible by square "
          + "of upscale_factor, but got input with sizes "
          + str(input_shape)
          + ", upscale_factor="
          + str(upscale_factor)
          + ", and self.size(1)="
          + str(c)
          + " is not divisible by "
          + str(upscale_factor_squared),
          as_array=False,
      )
      oc = int(c / upscale_factor_squared)
      oh = h * upscale_factor
      ow = w * upscale_factor
  
      input_reshaped = ivy.reshape(
          input, (b, oc, upscale_factor, upscale_factor, h, w)
      )
      return ivy.reshape(
          ivy.permute_dims(input_reshaped, (0, 1, 4, 2, 5, 3)),
          (b, oc, oh, ow),
      )
  
file_path: ivy/ivy/functional/frontends/torch/nn/functional/vision_functions.py
imports: import ivy
  from ivy import with_unsupported_dtypes, with_supported_dtypes
  from ivy.functional.frontends.torch.func_wrapper import to_ivy_arrays_and_back
label_desc: Use image node_id 10 for calling a global function with example usage: pixel_shuffle(input, upscale_factor) and returns: ivy