code: def test_perceiver_residual(self):
      num_q_channels = 10
      num_kv_channels = 5
      num_heads = 5
      dropout = 0.2
      mha = MultiHeadAttention(
          num_q_channels=num_q_channels,
          num_kv_channels=num_kv_channels,
          num_heads=num_heads,
          dropout=dropout,
      )
      res = Residual(module=mha, dropout=dropout)
      q_tensor = torch.rand(2, 10, 10)
      kv_tensor = torch.rand(2, 5, 5)
      out = res(q_tensor, kv_tensor)
      self.assertTrue(out.shape == torch.Size([2, 10, 10]))
  
imports: import unittest
  import torch
  from towhee.models.perceiver.multi_head_attention import MultiHeadAttention
  from towhee.models.perceiver.residual import Residual
label_desc: Use image node_id 1 for calling the PerceiverResidualTest obj's underlying member method code with example usage: obj.test_perceiver_residual() without return types