class_docstr: A wrapper around paddle.nn.functional.sigmoid_focal_loss.
  Args:
      use_sigmoid (bool): currently only support use_sigmoid=True
      alpha (float): parameter alpha in Focal Loss
      gamma (float): parameter gamma in Focal Loss
      loss_weight (float): final loss will be multiplied by this
class_docstr_tok: ["A","wrapper","around","paddle.nn.functional.sigmoid_focal_loss",".","Args",":","use_sigmoid","(","bool",")",":","currently","only","support","use_sigmoid=True","alpha","(","float",")",":","parameter","alpha","in","Focal","Loss","gamma","(","float",")",":","parameter","gamma","in","Focal","Loss","loss_weight","(","float",")",":","final","loss","will","be","multiplied","by","this"]
docstr: forward function.
  Args:
      pred (Tensor): logits of class prediction, of shape (N, num_classes)
      target (Tensor): target class label, of shape (N, )
      reduction (str): the way to reduce loss, one of (none, sum, mean)
docstr_tok: ["forward","function",".","Args",":","pred","(","Tensor",")",":","logits","of","class","prediction",",","of","shape","(","N",",","num_classes",")","target","(","Tensor",")",":","target","class","label",",","of","shape","(","N",",",")","reduction","(","str",")",":","the","way","to","reduce","loss",",","one","of","(","none",",","sum",",","mean",")"]
code: def forward(
      self,
      pred,
      target,
      weight=None,
      avg_factor=None,
      reduction_override=None,
  ):
      """forward function.
      Args:
          pred (Tensor): logits of class prediction, of shape (N, num_classes)
          target (Tensor): target class label, of shape (N, )
          reduction (str): the way to reduce loss, one of (none, sum, mean)
      """
      assert reduction_override in (None, "none", "mean", "sum")
      reduction = (
          reduction_override if reduction_override else self.reduction
      )
      num_classes = pred.shape[1]
      target = F.one_hot(target, num_classes + 1).astype(pred.dtype)
      target = target[:, :-1].detach()
      loss = F.sigmoid_focal_loss(
          pred,
          target,
          alpha=self.alpha,
          gamma=self.gamma,
          reduction="none",
      )
  
      if weight is not None:
          if weight.shape != loss.shape:
              if weight.shape[0] == loss.shape[0]:
                  # For most cases, weight is of shape (num_priors, ),
                  #  which means it does not have the second axis num_class
                  weight = weight.reshape((-1, 1))
              else:
                  # Sometimes, weight per anchor per class is also needed. e.g.
                  #  in FSAF. But it may be flattened of shape
                  #  (num_priors x num_class, ), while loss is still of shape
                  #  (num_priors, num_class).
                  assert weight.numel() == loss.numel()
                  weight = weight.reshape((loss.shape[0], -1))
          assert weight.ndim == loss.ndim
          loss = loss * weight
  
      # if avg_factor is not specified, just reduce the loss
      if avg_factor is None:
          if reduction == "mean":
              loss = loss.mean()
          elif reduction == "sum":
              loss = loss.sum()
      else:
          # if reduction is mean, then average the loss by avg_factor
          if reduction == "mean":
              # Avoid causing ZeroDivisionError when avg_factor is 0.0,
              # i.e., all labels of an image belong to ignore index.
              eps = 1e-10
              loss = loss.sum() / (avg_factor + eps)
          # if reduction is 'none', then do nothing, otherwise raise an error
          elif reduction != "none":
              raise ValueError(
                  'avg_factor can not be used with reduction="sum"'
              )
  
      return loss * self.loss_weight
  
file_path: PaddleDetection/ppdet/modeling/losses/focal_loss.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import paddle
  import paddle.nn.functional
  import paddle.nn
  from ppdet.core.workspace import register
label_desc: Use image node_id 2 for calling the Weighted_FocalLoss obj's underlying member method code with example usage: obj.forward(pred, target, weight, avg_factor, reduction_override) and returns: unknown