code: def test_forward(self):
      base_channels = 64
      pixel_decoder_cfg = ConfigDict(
          dict(
              type="PixelDecoder",
              in_channels=[base_channels * 2**i for i in range(4)],
              feat_channels=base_channels,
              out_channels=base_channels,
              norm_cfg=dict(type="GN", num_groups=32),
              act_cfg=dict(type="ReLU"),
          )
      )
      self = MODELS.build(pixel_decoder_cfg)
      self.init_weights()
      img_metas = [{}, {}]
      feats = [
          torch.rand(
              (
                  2,
                  base_channels * 2**i,
                  4 * 2 ** (3 - i),
                  5 * 2 ** (3 - i),
              )
          )
          for i in range(4)
      ]
      mask_feature, memory = self(feats, img_metas)
  
      assert (memory == feats[-1]).all()
      assert mask_feature.shape == feats[0].shape
  
file_path: mmdetection/tests/test_models/test_layers/test_plugins.py
imports: import unittest
  import pytest
  import torch
  from mmengine.config import ConfigDict
  from mmdet.models.layers import DropBlock
  from mmdet.registry import MODELS
  from mmdet.utils import register_all_modules
label_desc: Use image node_id 1 for calling the TestPixelDecoder obj's underlying member method code with example usage: obj.test_forward() without return types