class_docstr: This is the loss which was proposed in SimCLR https://arxiv.org/abs/2002.05709 paper.
  See the paper for the details on the loss.
  
  Config params:
      temperature (float): the temperature to be applied on the logits
      buffer_params:
          world_size (int): total number of trainers in training
          embedding_dim (int): output dimensions of the features projects
          effective_batch_size (int): total batch size used (includes positives)
class_docstr_tok: ["This","is","the","loss","which","was","proposed","in","SimCLR","https",":","\/\/arxiv.org\/abs\/2002.05709","paper",".","See","the","paper","for","the","details","on","the","loss",".","Config","params",":","temperature","(","float",")",":","the","temperature","to","be","applied","on","the","logits","buffer_params",":","world_size","(","int",")",":","total","number","of","trainers","in","training","embedding_dim","(","int",")",":","output","dimensions","of","the","features","projects","effective_batch_size","(","int",")",":","total","batch","size","used","(","includes","positives",")"]
code: def __init__(self, loss_config: AttrDict, device: str = "gpu"):
      super(SimclrInfoNCELoss, self).__init__()
  
      self.loss_config = loss_config
      # loss constants
      self.temperature = self.loss_config.temperature
      self.buffer_params = self.loss_config.buffer_params
      self.info_criterion = SimclrInfoNCECriterion(
          self.buffer_params, self.temperature
      )
  
imports: import logging
  import pprint
  import numpy
  import torch
  from classy_vision.generic.distributed_util import get_cuda_device_index, get_rank
  from classy_vision.losses import ClassyLoss, register_loss
  from torch import nn
  from vissl.config import AttrDict
  from vissl.utils.distributed_utils import gather_from_all
label_desc: Use image node_id 1 to create a new SimclrInfoNCELoss object from inherited base classes: ClassyLoss with example: obj = SimclrInfoNCELoss(loss_config, device)