class_docstr: Loss used in MSN (https://arxiv.org/pdf/2204.07141.pdf)
  
  Args:
      temperature (float): temperature
      teacher_momentum (float): controls EMA of teacher
class_docstr_tok: ["Loss","used","in","MSN","(","https",":","\/\/arxiv.org\/pdf\/2204.07141.pdf",")","Args",":","temperature","(","float",")",":","temperature","teacher_momentum","(","float",")",":","controls","EMA","of","teacher"]
code: def forward(self, output: List[torch.Tensor], *args, **kwargs):
      # Retrieve student and teacher outputs
      student_out = output[-1]
      teacher_out = self.teacher_output
  
      # TODO - implement the correct loss of MSN
      loss = (
          student_out[: teacher_out.shape[0]] - teacher_out
      ).sum() ** 2
      return loss
  
file_path: vissl/vissl/losses/msn_loss.py
imports: import logging
  import pprint
  from typing import List
  import torch
  from classy_vision.generic.distributed_util import get_cuda_device_index, is_distributed_training_run
  from classy_vision.losses import ClassyLoss, register_loss
  from fairscale.nn import FullyShardedDataParallel
  from vissl.config import AttrDict
  from vissl.models.model_helpers import get_no_ddp_model
label_desc: Use image node_id 5 for calling the MSNLoss obj's underlying member method code with example usage: obj.forward(output) and returns: loss