code: def forward(
      self,
      text,
      modal,
      text_args=None,
      modal_args=None,
      text_kwargs=None,
      modal_kwargs=None,
  ):
      if text_args is None:
          text_args = []
      if modal_args is None:
          modal_args = []
      if text_kwargs is None:
          text_kwargs = {}
      if modal_kwargs is None:
          modal_kwargs = {}
      text = self.text(text, *text_args, **text_kwargs)
  
      # Case of bert encoder, we only need pooled output. For BertModelJIT encoder
      # pooled output is the 2nd in the tuple(sequence, pooled, encoded_layers)
      if isinstance(text, collections.abc.Sequence) and len(text) >= 2:
          text = text[1]
  
      modal = self.modal(modal, *modal_args, **modal_kwargs)
      modal = torch.flatten(modal, start_dim=1)
      text = torch.flatten(text, start_dim=1)
      return text, modal
  
imports: import collections
  from copy import deepcopy
  import torch
  from mmf.common.registry import registry
  from mmf.models.base_model import BaseModel
  from mmf.modules.encoders import MultiModalEncoderBase
  from mmf.utils.build import build_classifier_layer
  from mmf.utils.modeling import get_bert_configured_parameters
label_desc: Use image node_id 3 for calling the FusionBase obj's underlying member method code with example usage: obj.forward(text, modal, text_args, modal_args, text_kwargs, modal_kwargs) and returns: text,  modal