code: def forward(self, text, conv_feature, attention_map=None):
      text_max_length = text.shape[1]
      mask = subsequent_mask(text_max_length)
      result = text
      result = self.mul_layernorm1(
          result + self.mask_multihead(text, text, text, mask=mask)[0]
      )
      b, c, h, w = conv_feature.shape
      conv_feature = paddle.transpose(
          conv_feature.reshape([b, c, h * w]), [0, 2, 1]
      )
      word_image_align, attention_map = self.multihead(
          result,
          conv_feature,
          conv_feature,
          mask=None,
          attention_map=attention_map,
      )
      result = self.mul_layernorm2(result + word_image_align)
      result = self.mul_layernorm3(result + self.pff(result))
  
      return result, attention_map
  
imports: import copy
  import math
  import paddle
  import paddle.nn
  import paddle.nn.functional
label_desc: Use image node_id 2 for calling the Decoder obj's underlying member method code with example usage: obj.forward(text, conv_feature, attention_map) and returns: result,  attention_map