class_docstr: fine-tuning wrapper for retrival task.
code: def forward(
      self,
      caps,
      cmasks,
      vfeats,
      vmasks,
      attention_mask=None,
      video_label=None,
      text_label=None,
      **kwargs,
  ):
      # TODO (huxu): other ways to do negative examples; move the following
      # into your criterion forward.
      output_hidden_states = True
  
      attention_mask, token_type_ids = self._mm_on_the_fly(
          cmasks, vmasks, attention_mask
      )
  
      separate_forward_split = (
          None if self.is_train else vmasks.size(1) + 2
      )  # [CLS] + [SEP]
  
      outputs = self.mm_encoder(
          input_ids=caps,
          input_video_embeds=vfeats,
          attention_mask=attention_mask,
          token_type_ids=token_type_ids,
          output_hidden_states=output_hidden_states,
          separate_forward_split=separate_forward_split,
      )
  
      pooled_video, pooled_text = self._pooling_vt_layer(
          outputs[2], cmasks, vmasks
      )
      return {"pooled_video": pooled_video, "pooled_text": pooled_text}
  
imports: import torch
  from torch import nn
  from .None import transformermodel
label_desc: Use image node_id 1 for calling the MMFusionJoint obj's underlying member method code with example usage: obj.forward(caps, cmasks, vfeats, vmasks, attention_mask, video_label, text_label) and returns: dict