code: def __init__(
      self, cfg, use_cuda: bool = True, use_multi_gpu: bool = False
  ):
      self.use_cuda = use_cuda
      self.use_multi_gpu = use_multi_gpu
      self.model_list = []
  
      self.cfg = cfg
      self.device = torch.device(
          "cuda" if torch.cuda.is_available() and use_cuda else "cpu"
      )
      self.video_pooler = Transformer(
          cfg.CONFIG.COOT_MODEL.MODEL_CONFIG.VIDEO_POOLER,
          cfg.CONFIG.COOT_DATA.FEATURE_DIM,
      )
  
      self.video_sequencer = Transformer(
          cfg.CONFIG.COOT_MODEL.MODEL_CONFIG.VIDEO_SEQUENCER,
          cfg.CONFIG.COOT_MODEL.MODEL_CONFIG.VIDEO_POOLER.OUTPUT_DIM,
      )
  
      self.text_pooler = Transformer(
          cfg.CONFIG.COOT_MODEL.MODEL_CONFIG.TEXT_POOLER,
          cfg.CONFIG.COOT_MODEL.MODEL_CONFIG.TEXT_ENCODER.FEATURE_DIM,
      )
  
      self.text_sequencer = Transformer(
          cfg.CONFIG.COOT_MODEL.MODEL_CONFIG.TEXT_SEQUENCER,
          cfg.CONFIG.COOT_MODEL.MODEL_CONFIG.TEXT_POOLER.OUTPUT_DIM,
      )
  
      self.model_list = [
          self.video_pooler,
          self.video_sequencer,
          self.text_pooler,
          self.text_sequencer,
      ]
  
imports: from collections import OrderedDict
  import os
  import numpy
  import torch
  from torch import nn
  from gluoncv.torch.utils.coot_utils import truncated_normal_fill
label_desc: Use image node_id 1 to create a new MultiModalTransformer object  with example: obj = MultiModalTransformer(cfg, use_cuda, use_multi_gpu)