def METHOD_NAME(self, pred, target, weight=None, avg_factor=None):
    """Forward function.
    Args:
        pred (Tensor): The prediction.
        target (Tensor): The learning target of the prediction.
        weight (Tensor, optional): The weight of loss for each
            prediction. Defaults to None.
        avg_factor (int, optional): Average factor that is used to average
            the loss. Defaults to None.
    Returns:
        Tensor: The calculated loss
    """
    loss = self.loss_weight * varifocal_loss(
        pred,
        target,
        alpha=self.alpha,
        gamma=self.gamma,
        iou_weighted=self.iou_weighted,
        use_sigmoid=self.use_sigmoid)
    if weight is not None:
        loss = loss * weight
    if avg_factor is None:
        if self.reduction == 'none':
            return loss
        elif self.reduction == 'mean':
            return loss.mean()
        elif self.reduction == 'sum':
            return loss.sum()
    else:
        # if reduction is mean, then average the loss by avg_factor
        if self.reduction == 'mean':
            loss = loss.sum() / avg_factor
        # if reduction is 'none', then do nothing, otherwise raise an error
        elif self.reduction != 'none':
            raise ValueError(
                'avg_factor can not be used with reduction="sum"')
    return loss