code: def compute_raw_att(self, image_feat, question_embedding):
      num_location = image_feat.shape[1]
      image_fa = self.fa_image(image_feat)
      question_fa = self.fa_txt(question_embedding)
      question_fa_expand = torch.unsqueeze(question_fa, 1).expand(
          -1, num_location, -1
      )
      joint_feature = image_fa * question_fa_expand
      joint_feature = self.dropout(joint_feature)
      raw_attention = self.lc(joint_feature)
      return raw_attention
  
imports: import math
  from typing import Optional, Tuple, Type
  import torch
  from mmf.modules.layers import GatedTanh, ModalCombineLayer, TransformLayer
  from torch import nn
label_desc: Use image node_id 2 for calling the ProjectAttention obj's underlying member method code with example usage: obj.compute_raw_att(image_feat, question_embedding) and returns: raw_attention