code: def test_transform_boxes_wh(self, device, dtype):
      boxes = torch.tensor(
          [
              [139.2640, 103.0150, 258.0480, 307.5075],
              [1.0240, 80.5547, 510.9760, 431.4453],
              [165.2053, 262.1440, 345.4293, 246.7840],
              [119.8080, 144.2067, 137.2160, 265.9225],
          ],
          device=device,
          dtype=dtype,
      )
  
      expected = torch.tensor(
          [
              [114.6880, 103.0150, 258.0480, 307.5075],
              [0.0000, 80.5547, 510.9760, 431.4453],
              [1.3654, 262.1440, 345.4293, 246.7840],
              [254.9760, 144.2067, 137.2160, 265.9225],
          ],
          device=device,
          dtype=dtype,
      )
  
      trans_mat = torch.tensor(
          [[[-1.0, 0.0, 512.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]],
          device=device,
          dtype=dtype,
      )
  
      out = transform_bbox(
          trans_mat, boxes, mode="xywh", restore_coordinates=True
      )
      assert_close(out, expected, atol=1e-4, rtol=1e-4)
  
imports: import torch
  import kornia
  from kornia.geometry.bbox import infer_bbox_shape, infer_bbox_shape3d, nms, transform_bbox, validate_bbox, validate_bbox3d
  from kornia.testing import assert_close, gradcheck, tensor_to_gradcheck_var
label_desc: Use image node_id 3 for calling the TestTransformBoxes2D obj's underlying member method code with example usage: obj.test_transform_boxes_wh(device, dtype) without return types