code: def build(self):
      if self.training_head_type == "pretraining":
          self.model = VisualBERTForPretraining(self.config)
      else:
          self.model = VisualBERTForClassification(self.config)
  
      if self.config.special_visual_initialize:
          self.model.bert.embeddings.initialize_visual_from_pretrained()
  
      if getattr(self.config, "freeze_base", False):
          for p in self.model.bert.parameters():
              p.requires_grad = False
  
imports: import os
  from copy import deepcopy
  from typing import Dict, List, Optional, Tuple
  import torch
  from mmf.common.registry import registry
  from mmf.models import BaseModel
  from mmf.modules.embeddings import BertVisioLinguisticEmbeddings
  from mmf.modules.hf_layers import BertEncoderJit, BertLayerJit
  from mmf.utils.configuration import get_mmf_cache_dir
  from mmf.utils.modeling import get_optimizer_parameters_for_bert
  from mmf.utils.torchscript import getattr_torchscriptable
  from mmf.utils.transform import transform_to_batch_sequence, transform_to_batch_sequence_dim
  from omegaconf import OmegaConf
  from torch import nn, Tensor
label_desc: Use image node_id 3 for calling the VisualBERT obj's underlying member method code with example usage: obj.build() without return types