code: def test_with_no_valid_pairs(self):
      all_embedding_angles = [[0], [0, 10, 20], [0, 40, 60]]
      all_labels = [
          torch.LongTensor([0]),
          torch.LongTensor([0, 0, 0]),
          torch.LongTensor([1, 2, 3]),
      ]
      temperature = 0.1
      for loss_class in [NTXentLoss, SupConLoss]:
          loss_funcA = loss_class(temperature)
          loss_funcB = loss_class(temperature, distance=LpDistance())
          for loss_func in [loss_funcA, loss_funcB]:
              for dtype in TEST_DTYPES:
                  for embedding_angles, labels in zip(
                      all_embedding_angles, all_labels
                  ):
                      embeddings = torch.tensor(
                          [angle_to_coord(a) for a in embedding_angles],
                          requires_grad=True,
                          dtype=dtype,
                      ).to(
                          TEST_DEVICE
                      )  # 2D embeddings
                      loss = loss_func(embeddings, labels)
                      loss.backward()
                      self.assertEqual(loss, 0)
  
file_path: pytorch-metric-learning/tests/losses/test_ntxent_loss.py
imports: import unittest
  import torch
  from pytorch_metric_learning.distances import LpDistance
  from pytorch_metric_learning.losses import NTXentLoss, SupConLoss
  from pytorch_metric_learning.reducers import AvgNonZeroReducer, PerAnchorReducer
  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 4 for calling the TestNTXentLoss obj's underlying member method code with example usage: obj.test_with_no_valid_pairs() without return types