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"]
docstr: Instantiates MSNLoss from configuration.
docstr_tok: ["Instantiates","MSNLoss","from","configuration","."]
code: def from_config(cls, loss_config: AttrDict):
      """
      Instantiates MSNLoss from configuration.
      """
      # TODO - add missing argument to configure loss
      return cls(
          temperature=loss_config.temperature,
          teacher_momentum=loss_config.momentum,
      )
  
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 2 for calling the MSNLoss obj's underlying member method code with example usage: obj.from_config(cls, loss_config) and returns: cls