code: def test_crop(device, top, left, height, width):
      script_crop = torch.jit.script(F.crop)
  
      img_tensor, pil_img = _create_data(16, 18, device=device)
  
      pil_img_cropped = F.crop(pil_img, top, left, height, width)
  
      img_tensor_cropped = F.crop(img_tensor, top, left, height, width)
      _assert_equal_tensor_to_pil(img_tensor_cropped, pil_img_cropped)
  
      img_tensor_cropped = script_crop(
          img_tensor, top, left, height, width
      )
      _assert_equal_tensor_to_pil(img_tensor_cropped, pil_img_cropped)
  
      batch_tensors = _create_data_batch(
          16, 18, num_samples=4, device=device
      )
      _test_fn_on_batch(
          batch_tensors,
          F.crop,
          top=top,
          left=left,
          height=height,
          width=width,
      )
  
imports: import colorsys
  import itertools
  import math
  import os
  from functools import partial
  from typing import Sequence
  import numpy
  import PIL.Image
  import pytest
  import torch
  import torchvision.transforms
  import torchvision.transforms._functional_pil
  import torchvision.transforms._functional_tensor
  import torchvision.transforms.functional
  from common_utils import _assert_approx_equal_tensor_to_pil, _assert_equal_tensor_to_pil, _create_data, _create_data_batch, _test_fn_on_batch, assert_equal, cpu_and_cuda, needs_cuda
  from torchvision.transforms import InterpolationMode
label_desc: Use image node_id 31 for calling a global function with example usage: test_crop(device, top, left, height, width) without return types