class_docstr: Issue #411:
  
  A common use case is to have embeddings and ref_emb be augmented versions of each other.
  For most losses right now you have to create labels to indicate
  which embeddings correspond with which ref_emb.
  A wrapper that does this for the user would be nice.
  
      loss_fn = SelfSupervisedLoss(TripletMarginLoss())
      loss = loss_fn(embeddings, ref_emb1, ref_emb2, ...)
  
  where ref_embk = kth augmentation of embeddings.
code: def supported_losses():
      return [
          "AngularLoss",
          "CircleLoss",
          "ContrastiveLoss",
          "GeneralizedLiftedStructureLoss",
          "IntraPairVarianceLoss",
          "LiftedStructureLoss",
          "MultiSimilarityLoss",
          "NTXentLoss",
          "SignalToNoiseRatioContrastiveLoss",
          "SupConLoss",
          "TripletMarginLoss",
          "NCALoss",
          "TupletMarginLoss",
      ]
  
imports: import torch
  from .base_loss_wrapper import BaseLossWrapper
label_desc: Use image node_id 2 for calling the SelfSupervisedLoss obj's underlying member method code with example usage: obj.supported_losses() and returns: list