code: def helper(
      self,
      embeddings,
      labels,
      pos_pairs,
      neg_pairs,
      dtype,
      ref_emb=None,
      ref_labels=None,
  ):
      if dtype == torch.float16:
          alpha, beta, base = 0.1, 10, 0.5
      else:
          alpha, beta, base = 0.1, 40, 0.5
      loss_func = MultiSimilarityLoss(alpha=alpha, beta=beta, base=base)
      loss = loss_func(
          embeddings, labels, ref_emb=ref_emb, ref_labels=ref_labels
      )
      loss.backward()
      embeddings = torch.nn.functional.normalize(embeddings)
      correct_total = 0
      for i in range(len(embeddings)):
          correct_pos_loss = 0
          correct_neg_loss = 0
          for a, p in pos_pairs:
              if a == i:
                  anchor = embeddings[a]
                  positive = (
                      embeddings[p] if ref_emb is None else ref_emb[p]
                  )
                  correct_pos_loss += torch.exp(
                      -alpha * (torch.matmul(anchor, positive) - base)
                  )
          if correct_pos_loss > 0:
              correct_pos_loss = (1 / alpha) * torch.log(
                  1 + correct_pos_loss
              )
  
          for a, n in neg_pairs:
              if a == i:
                  anchor = embeddings[a]
                  negative = (
                      embeddings[n] if ref_emb is None else ref_emb[n]
                  )
                  correct_neg_loss += torch.exp(
                      beta * (torch.matmul(anchor, negative) - base)
                  )
          if correct_neg_loss > 0:
              correct_neg_loss = (1 / beta) * torch.log(
                  1 + correct_neg_loss
              )
          correct_total += correct_pos_loss + correct_neg_loss
  
      correct_total /= embeddings.size(0)
      rtol = 1e-2 if dtype == torch.float16 else 1e-5
      self.assertTrue(torch.isclose(loss, correct_total, rtol=rtol))
  
file_path: pytorch-metric-learning/tests/losses/test_multi_similarity_loss.py
imports: import unittest
  import torch
  from pytorch_metric_learning.losses import MultiSimilarityLoss
  from ..None import TEST_DEVICE, TEST_DTYPES
  from ..zzz_testing_utils.testing_utils import angle_to_coord
  from .utils import get_pair_embeddings_with_ref
label_desc: Use image node_id 3 for calling the TestMultiSimilarityLoss obj's underlying member method code with example usage: obj.helper(embeddings, labels, pos_pairs, neg_pairs, dtype, ref_emb, ref_labels) without return types