code: def forward_prediction_heads(
      self, output, mask_features, attn_mask_target_size
  ):
      decoder_output = self.decoder_norm(output)
      outputs_class = self.class_embed(decoder_output)
      mask_embed = self.mask_embed(decoder_output).astype("float32")
      mask_features = mask_features.astype("float32")
      outputs_mask = paddle.einsum(
          "bqc,bchw->bqhw", mask_embed, mask_features
      )
  
      with paddle.no_grad():
          # NOTE: prediction is of higher-resolution
          # [B, Q, H, W] -> [B, Q, H*W] -> [B, h, Q, H*W] -> [B*h, Q, HW]
          attn_mask = F.interpolate(
              outputs_mask,
              size=attn_mask_target_size,
              mode="bilinear",
              align_corners=False,
          )
          attn_mask = (
              paddle.tile(
                  F.sigmoid(attn_mask).flatten(2).unsqueeze(1),
                  (1, self.num_heads, 1, 1),
              )
              >= 0.5
          ).astype("bool")
  
      return outputs_class, outputs_mask, attn_mask
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.cvlibs import param_init
  from paddlepanseg.models.param_init import c2_xavier_fill, THLinearInitMixin, th_linear_fill, th_multihead_fill
  from .common import Conv2D, PositionEmbeddingSine
label_desc: Use image node_id 4 for calling the MultiScaleMaskedTransformerDecoder obj's underlying member method code with example usage: obj.forward_prediction_heads(output, mask_features, attn_mask_target_size) and returns: outputs_class,  outputs_mask,  attn_mask