class_docstr: Test RepMLP blocks
code: def test_repmlp_block(self):
      data = torch.rand(1, 4, 6, 6)
      model = RepMLPBlock(
          in_channels=4, out_channels=4, h=3, w=3, reparam_conv_k=(1, 1)
      )
      out = model(data)
      # print(out.shape)
      self.assertTrue(out.shape == (1, 4, 6, 6))
  
      parts1 = model.partition(data, 2, 2)
      # print(parts1.shape)
      self.assertTrue(parts1.shape == (1, 2, 2, 4, 3, 3))
      parts2 = model.partition_affine(data, 2, 2)
      # print(parts2.shape)
      self.assertTrue(parts2.shape == (4, 2, 2, 1, 3, 3))
  
      # Test local_inject & get_equivalent_fc3 & _convert_conv_to_f
      model.local_inject()
      # print(type(model.fc3_bn), model.fc3.weight.shape, model.fc3.bias.shape)
      self.assertTrue(isinstance(model.fc3_bn, torch.nn.Identity))
      self.assertTrue(model.fc3.weight.shape == (9, 9, 1, 1))
      self.assertTrue(model.fc3.bias.shape == (9,))
  
imports: import unittest
  import torch
  from towhee.models.repmlp import GlobalPerceptron, RepMLPBlock
label_desc: Use image node_id 2 for calling the TestBlocks obj's underlying member method code with example usage: obj.test_repmlp_block() without return types