code: def _test_functional_op(
      f,
      device,
      channels=3,
      fn_kwargs=None,
      test_exact_match=True,
      **match_kwargs,
  ):
      fn_kwargs = fn_kwargs or {}
  
      tensor, pil_img = _create_data(
          height=10, width=10, channels=channels, device=device
      )
      transformed_tensor = f(tensor, **fn_kwargs)
      transformed_pil_img = f(pil_img, **fn_kwargs)
      if test_exact_match:
          _assert_equal_tensor_to_pil(
              transformed_tensor, transformed_pil_img, **match_kwargs
          )
      else:
          _assert_approx_equal_tensor_to_pil(
              transformed_tensor, transformed_pil_img, **match_kwargs
          )
  
imports: import os
  import sys
  import numpy
  import PIL.Image
  import pytest
  import torch
  from common_utils import _assert_approx_equal_tensor_to_pil, _assert_equal_tensor_to_pil, _create_data, _create_data_batch, assert_equal, cpu_and_cuda, float_dtypes, get_tmp_dir, int_dtypes
  from torchvision import transforms
  from torchvision.transforms import functional, InterpolationMode
  from torchvision.transforms.autoaugment import _apply_op
label_desc: Use image node_id 3 for calling a global function with example usage: _test_functional_op(f, device, channels, fn_kwargs, test_exact_match) without return types