code: def test_window_attention3d(self):
      dim = 144
      window_size = [2, 2, 2]
      num_heads = 8
      wa3 = WindowAttention3D(
          dim=dim, window_size=window_size, num_heads=num_heads
      )
      num_windows = 2 * 2 * 2
      b = 3
      n = 8
      c = dim
      input_tensor = torch.rand(num_windows * b, n, c)
      out = wa3(input_tensor)  # torch.Size([24, 8, 144])
      self.assertTrue(out.shape == torch.Size([24, 8, 144]))
  
imports: import unittest
  import torch
  from towhee.models.layers.window_attention3d import WindowAttention3D
label_desc: Use image node_id 1 for calling the WindowAttention3DTest obj's underlying member method code with example usage: obj.test_window_attention3d() without return types