class_docstr: TransChex based on: "Hatamizadeh et al.,TransCheX: Self-Supervised Pretraining of Vision-Language
  Transformers for Chest X-ray Analysis"
code: def forward(self, input_ids, token_type_ids=None, vision_feats=None):
      attention_mask = (
          torch.ones_like(input_ids).unsqueeze(1).unsqueeze(2)
      )
      attention_mask = attention_mask.to(
          dtype=next(self.parameters()).dtype
      )
      attention_mask = (1.0 - attention_mask) * -10000.0
      vision_feats = (
          self.vision_proj(vision_feats).flatten(2).transpose(1, 2)
      )
      vision_feats = self.norm_vision_pos(vision_feats)
      vision_feats = vision_feats + self.pos_embed_vis
      hidden_state_lang, hidden_state_vis = self.multimodal(
          input_ids=input_ids,
          token_type_ids=token_type_ids,
          vision_feats=vision_feats,
          attention_mask=attention_mask,
      )
      pooled_features = self.pooler(hidden_state_lang)
      logits = self.cls_head(self.drop(pooled_features))
      return logits
  
imports: from __future__ import annotations
  import math
  from collections.abc import Sequence
  import torch
  from torch import nn
  from monai.config.type_definitions import PathLike
  from monai.utils import optional_import
label_desc: Use image node_id 2 for calling the Transchex obj's underlying member method code with example usage: obj.forward(input_ids, token_type_ids, vision_feats) and returns: logits