
    khs	                         d dl Z d dlmc mZ ddlmZ 	 	 	 dde j                  de j                  dedede	d	e j                  fd
Z
y)    N   )_log_api_usage_onceinputstargetsalphagamma	reductionreturnc                 ,   d|cxk  rdk  sn |dk7  rt        d| d      t        j                  j                         s-t        j                  j	                         st        t               t        j                  |       }t        j                  | |d      }||z  d|z
  d|z
  z  z   }|d|z
  |z  z  }|dk\  r||z  d|z
  d|z
  z  z   }	|	|z  }|dk(  r	 |S |dk(  r|j                         }|S |d	k(  r|j                         }|S t        d
| d      )a  
    Loss used in RetinaNet for dense detection: https://arxiv.org/abs/1708.02002.

    Args:
        inputs (Tensor): A float tensor of arbitrary shape.
                The predictions for each example.
        targets (Tensor): A float tensor with the same shape as inputs. Stores the binary
                classification label for each element in inputs
                (0 for the negative class and 1 for the positive class).
        alpha (float): Weighting factor in range [0, 1] to balance
                positive vs negative examples or -1 for ignore. Default: ``0.25``.
        gamma (float): Exponent of the modulating factor (1 - p_t) to
                balance easy vs hard examples. Default: ``2``.
        reduction (string): ``'none'`` | ``'mean'`` | ``'sum'``
                ``'none'``: No reduction will be applied to the output.
                ``'mean'``: The output will be averaged.
                ``'sum'``: The output will be summed. Default: ``'none'``.
    Returns:
        Loss tensor with the reduction option applied.
    r      zInvalid alpha value: z4. alpha must be in the range [0,1] or -1 for ignore.none)r	   meansumz$Invalid Value for arg 'reduction': 'z3 
 Supported reduction modes: 'none', 'mean', 'sum')
ValueErrortorchjitis_scripting
is_tracingr   sigmoid_focal_losssigmoidF binary_cross_entropy_with_logitsr   r   )
r   r   r   r   r	   pce_lossp_tlossalpha_ts
             V/var/www/teggl/fontify/venv/lib/python3.12/site-packages/torchvision/ops/focal_loss.pyr   r      s6   : O!O"07klmm99!!#EII,@,@,B./fA00FSG
g+Q1w;/
/Cq3w5()Dz'/QY1w;$??~ F K 
f	yy{ K 
e	xxz
 K 29+=qr
 	
    )g      ?r   r   )r   torch.nn.functionalnn
functionalr   utilsr   Tensorfloatstrr    r    r   <module>r)      se       ' 6LL6\\6 6 	6
 6 \\6r    