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 __init__(
      self, mode, img_feat_dim, txt_feat_dim, common_space_dim
  ):
      super().__init__()
      self.mode = mode
      if mode == "concat":
          pass  # TODO
      elif mode == "weighted":
          self.alphas = nn.Sequential(
              nn.Linear(img_feat_dim + txt_feat_dim, 512),
              nn.ReLU(),
              nn.Dropout(p=0.1),
              nn.Linear(512, 2),
          )
          self.img_proj = nn.Linear(img_feat_dim, common_space_dim)
          self.txt_proj = nn.Linear(txt_feat_dim, common_space_dim)
          self.post_process = nn.Sequential(
              nn.Linear(common_space_dim, common_space_dim),
              nn.ReLU(),
              nn.Dropout(p=0.1),
              nn.Linear(common_space_dim, common_space_dim),
          )
  
imports: import torch
  from torch import nn
  from torch.nn import functional
label_desc: Use image node_id 1 to create a new FeatureFusion object from inherited base classes: nn with example: obj = FeatureFusion(mode, img_feat_dim, txt_feat_dim, common_space_dim)