code: def test_get_boxes_shape_batch(self, device, dtype):
      t_box1 = torch.tensor(
          [[[1.0, 1.0], [3.0, 2.0], [3.0, 1.0], [1.0, 2.0]]],
          device=device,
          dtype=dtype,
      )
      t_box2 = torch.tensor(
          [[[5.0, 2.0], [2.0, 2.0], [5.0, 4.0], [2.0, 4.0]]],
          device=device,
          dtype=dtype,
      )
      batched_boxes = Boxes(torch.stack([t_box1, t_box2]))
  
      h, w = batched_boxes.get_boxes_shape()
      assert h.ndim == 2
      assert w.ndim == 2
      assert h.shape == (2, 1)
      assert w.shape == (2, 1)
      assert_close(
          h, torch.as_tensor([[2], [3]], device=device, dtype=dtype)
      )
      assert_close(
          w, torch.as_tensor([[3], [4]], device=device, dtype=dtype)
      )
  
imports: from functools import partial
  import pytest
  import torch
  from kornia.geometry.boxes import Boxes, Boxes3D
  from kornia.testing import assert_close, gradcheck, tensor_to_gradcheck_var
label_desc: Use image node_id 3 for calling the TestBoxes2D obj's underlying member method code with example usage: obj.test_get_boxes_shape_batch(device, dtype) without return types