class_docstr: The mask head of segmenter.
  Args:
      num_classes (int): The unique number of target classes.
      in_dim (int): The embed dim of input.
      embed_dim (int): Embedding dim of mask transformer.
      depth (int): The num of layers in Transformer.
      num_heads (int): The num of heads in MSA.
      mlp_ratio (int, optional): Ratio of MLP dim. Default: 4.
      drop_rate (float, optional): Drop rate of MLP in MSA. Default: 0.0.
      drop_path_rate (float, optional): Drop path rate in MSA. Default: 0.0.
      attn_drop_rate (float, optional): Attenation drop rate in MSA. Default: 0.0.
      qkv_bias (bool, optional): Whether add bias in qkv linear. Default: False.
docstr: Forward function.
  Args:
      x (Tensor): Input tensor of decoder.
      patch_embed_size (Tensor): The height and width of the patch embed tensor.
  Returns:
      list[Tensor]: Segmentation results.
docstr_tok: ["Forward","function",".","Args",":","x","(","Tensor",")",":","Input","tensor","of","decoder",".","patch_embed_size","(","Tensor",")",":","The","height","and","width","of","the","patch","embed","tensor",".","Returns",":","list","[","Tensor","]",":","Segmentation","results","."]
code: def forward(self, x, patch_embed_size):
      """Forward function.
      Args:
          x (Tensor): Input tensor of decoder.
          patch_embed_size (Tensor): The height and width of the patch embed tensor.
      Returns:
          list[Tensor]: Segmentation results.
      """
      x = self.proj_input(x)
  
      cls_token = self.cls_token.expand((paddle.shape(x)[0], -1, -1))
      x = paddle.concat([x, cls_token], axis=1)
  
      for block in self.blocks:
          x = block(x)
      x = self.decoder_norm(x)
  
      patches, masks = (
          x[:, : -self.num_classes],
          x[:, -self.num_classes :],
      )
      patches = self.proj_patch(patches)
      masks = self.proj_class(masks)
      patches = patches / paddle.norm(patches, axis=-1, keepdim=True)
      masks = masks / paddle.norm(masks, axis=-1, keepdim=True)
  
      masks = patches @ masks.transpose((0, 2, 1))
      masks = masks.reshape(
          (0, 0, self.num_classes)
      )  # For export inference model
      masks = self.mask_norm(masks)
  
      # [b, (h w), c] -> [b, c, h, w]
      h, w = patch_embed_size[0], patch_embed_size[1]
      masks = masks.reshape((0, h, w, paddle.shape(masks)[-1]))
      masks = masks.transpose((0, 3, 1, 2))
  
      return [masks]
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  import numpy
  from paddleseg.utils import utils
  from paddleseg.cvlibs import manager, param_init
  from paddleseg.models.backbones import vision_transformer, transformer_utils
label_desc: Use image node_id 2 for calling the SegmenterMaskHead obj's underlying member method code with example usage: obj.forward(x, patch_embed_size) and returns: list