class_docstr: Code modified from https://github.com/google-research/vision_transformer
  and https://www.internalfb.com/D24714842, as per https://arxiv.org/abs/2010.11929
  
  Authors use a 2-layer MLP for pretraining and a single linear layer for
  fine-tuning. Thus a pre-training head would be called with something like
  ["vision_transformer_head", {"in_plane": D, "hidden_dim": D,
  "num_classes": K}], where D = hidden dimensionality and K = number of
  classes. A fine-tuning head would be called ["vision_transformer_head",
  {"in_plane", D, "num_classes": K]. Not passing "hidden_dim" will result
  in a single linear layer.
code: def init_weights(self):
      if hasattr(self.layers, "pre_logits"):
          lecun_normal_init(
              self.layers.pre_logits.weight,
              fan_in=self.layers.pre_logits.in_features,
          )
          nn.init.zeros_(self.layers.pre_logits.bias)
      trunc_normal_(self.layers.head.weight, std=0.02)
      nn.init.zeros_(self.layers.head.bias)
  
file_path: vissl/vissl/models/heads/vision_transformer_head.py
imports: import copy
  from collections import OrderedDict
  import torch.nn
  from vissl.config import AttrDict
  from vissl.models.heads import register_model_head
  from vissl.models.model_helpers import lecun_normal_init, trunc_normal_
label_desc: Use image node_id 2 for calling the VisionTransformerHead obj's underlying member method code with example usage: obj.init_weights() without return types