class_docstr: Depth aggregator
  Args:
      mode (str): aggregator
      img_feat_dim (int): image feature dimension
      txt_feat_dim (int): text feature dimension
      common_space_dim (int): common space dimension
code: def forward(self, img_feat, txt_feat):
      concat_feat = torch.cat([img_feat, txt_feat], dim=1)
      alphas = torch.sigmoid(self.alphas(concat_feat))  # B x 2
      img_feat_norm = F.normalize(self.img_proj(img_feat), p=2, dim=1)
      txt_feat_norm = F.normalize(self.txt_proj(txt_feat), p=2, dim=1)
      out_feat = img_feat_norm * alphas[:, 0].unsqueeze(
          1
      ) + txt_feat_norm * alphas[:, 1].unsqueeze(1)
      out_feat = self.post_process(out_feat)
      return out_feat, alphas
  
imports: import torch
  from torch import nn
  from torch.nn import functional
label_desc: Use image node_id 2 for calling the FeatureFusion obj's underlying member method code with example usage: obj.forward(img_feat, txt_feat) and returns: out_feat,  alphas