class_docstr: Specific head for training MSN (https://arxiv.org/pdf/2204.07141.pdf).
class_docstr_tok: ["Specific","head","for","training","MSN","(","https",":","\/\/arxiv.org\/pdf\/2204.07141.pdf",")","."]
code: def forward(self, x):
      x = self.fc(x)
      query = F.normalize(x, dim=-1, p=2)
      if self.return_query:
          return query
  
      supports = F.normalize(self.prototypes)
      out = (
          self.softmax(query @ supports.T / self.temperature)
          @ self.proto_labels
      )
      return out
  
file_path: vissl/vissl/models/heads/msn_head.py
imports: from collections import OrderedDict
  import torch
  import torch.nn
  import torch.nn.functional
  from vissl.config import AttrDict
  from vissl.models.heads import register_model_head
  from vissl.models.model_helpers import trunc_normal_
label_desc: Use image node_id 4 for calling the MSNHead obj's underlying member method code with example usage: obj.forward(x) and returns: out, query