class_docstr: This head is useful for dealing with Siamese models which have multiple towers.
  For an input of type (N * num_towers) x C, this head can convert the output
  to N x (num_towers * C).
  
  This head is used in case of PIRL https://arxiv.org/abs/1912.01991 and
  Jigsaw https://arxiv.org/abs/1603.09246 approaches.
docstr: Args:
      model_config (AttrDict): dictionary config.MODEL in the config file
  
      num_towers (int): number of towers in siamese model
docstr_tok: ["Args",":","model_config","(","AttrDict",")",":","dictionary","config.MODEL","in","the","config","file","num_towers","(","int",")",":","number","of","towers","in","siamese","model"]
code: def __init__(self, model_config: AttrDict, num_towers: int):
      """
      Args:
          model_config (AttrDict): dictionary config.MODEL in the config file
  
          num_towers (int): number of towers in siamese model
      """
      super().__init__()
      self.num_towers = num_towers
  
file_path: vissl/vissl/models/heads/siamese_concat_view.py
imports: import torch
  import torch.nn
  from vissl.config import AttrDict
  from vissl.models.heads import register_model_head
label_desc: Use image node_id 1 to create a new SiameseConcatView object from inherited base classes: nn with example: obj = SiameseConcatView(model_config, num_towers)