code: def test_gradcheck(self, batch_size, device, dtype):
      opts = {"device": device, "dtype": torch.float64}
      src, dst = _sample_points(batch_size, **opts)
      kernel, affine = kornia.geometry.transform.get_tps_transform(
          src, dst
      )
      image = torch.rand(
          batch_size, 3, 8, 8, requires_grad=True, **opts
      )
      assert gradcheck(
          kornia.geometry.transform.warp_image_tps,
          (image, dst, kernel, affine),
          raise_exception=True,
          atol=1e-4,
          rtol=1e-4,
          nondet_tol=1e-8,
          fast_mode=True,
      )
  
imports: import pytest
  import torch
  from torch.autograd import gradcheck
  import kornia
  from kornia.testing import assert_close
  from kornia.utils._compat import torch_version_ge
label_desc: Use image node_id 4 for calling the TestWarpImage obj's underlying member method code with example usage: obj.test_gradcheck(batch_size, device, dtype) without return types