class_docstr: Circle loss for pairwise labels only.
  
  Args:
  m:  The relaxation factor that controls the radious of the decision boundary.
  gamma: The scale factor that determines the largest scale of each similarity score.
  
  According to the paper, the suggested default values of m and gamma are:
  
  Face Recognition: m = 0.25, gamma = 256
  Person Reidentification: m = 0.25, gamma = 128
  Fine-grained Image Retrieval: m = 0.4, gamma = 80
  
  By default, we set m = 0.4 and gamma = 80
code: def __init__(self, m=0.4, gamma=80, **kwargs):
      super().__init__(mat_based_loss=True, **kwargs)
      c_f.assert_distance_type(self, CosineSimilarity)
      self.m = m
      self.gamma = gamma
      self.soft_plus = torch.nn.Softplus(beta=1)
      self.op = 1 + self.m
      self.on = -self.m
      self.delta_p = 1 - self.m
      self.delta_n = self.m
      self.add_to_recordable_attributes(
          list_of_names=[
              "m",
              "gamma",
              "op",
              "on",
              "delta_p",
              "delta_n",
          ],
          is_stat=False,
      )
  
file_path: pytorch-metric-learning/src/pytorch_metric_learning/losses/circle_loss.py
imports: import torch
  from ..distances import CosineSimilarity
  from ..reducers import AvgNonZeroReducer
  from ..utils import common_functions
  from ..utils import loss_and_miner_utils
  from .generic_pair_loss import GenericPairLoss
label_desc: Use image node_id 1 to create a new CircleLoss object from inherited base classes: GenericPairLoss with example: obj = CircleLoss(m, gamma)