
    eTh                     t   S SK Jr  S SKrS SKJr  S SKJrJr  SSKJr  SSK	J
r
Jr  SSKJrJr  SSKJr  SS	KJr    S+S
\R&                  S\R&                  S\\   S\S\R&                  4
S jjr   S,S\S\\   S\S\\R&                     S\R&                  4
S jjr  S+S\R&                  S\R&                  S\S\\   S\4
S jjrS\R&                  S\R&                  S\R&                  4S jrS rS\R&                  4S jr0 S\_S\_S\_S\_S\_S\_S \_S!\_S"\
_S#\
_S$\
_S%\_S&\_S'\_S(\_S)\_S*\_rg)-    )OptionalN)BCEWithLogitsLossMSELoss   )DFineForObjectDetectionLoss)$DeformableDetrForObjectDetectionLoss!DeformableDetrForSegmentationLoss)ForObjectDetectionLossForSegmentationLoss)#GroundingDinoForObjectDetectionLoss)RTDetrForObjectDetectionLosssourcetargetnum_items_in_batchignore_indexreturnc                 d    Ub  SOSn[         R                  R                  XX5S9nUS:X  a  Xb-  nU$ )Nsummean)r   	reduction)nn
functionalcross_entropy)r   r   r   r   kwargsr   losss          T/var/www/auris/envauris/lib/python3.13/site-packages/transformers/loss/loss_utils.pyfixed_cross_entropyr      s>     ,7VI==&&vL&fDE(K    
vocab_sizeshift_labelsc                 .   U R                  5       n Uc6  [        R                  R                  USUS9nUSSS 24   R	                  5       nU R                  SU5      n UR                  S5      nUR                  U R                  5      n[        XX440 UD6nU$ )N)r   r   )value.r   )	floatr   r   pad
contiguousviewtodevicer   )logitslabelsr   r   r   r    r   r   s           r   ForCausalLMLossr,   *   s     \\^F""66"Fc12g113 [[Z(F$$R(L??6==1Lv5G`Y_`DKr   r*   r+   c                     U R                  5       n U R                  SU5      n UR                  S5      nUR                  U R                  5      n[	        XX440 UD6nU$ Nr#   )r$   r'   r(   r)   r   )r*   r+   r   r   r   r   r   s          r   ForMaskedLMLossr/   D   sZ     \\^F [[Z(F[[_F YYv}}%Fv/AZSYZDKr   pooled_logitsc                    UR                   nUR                  cQ  US:X  a  SUl        OCUS:  a6  U R                  [        R                  [        R
                  4;   a  SUl        OSUl        U R                  UR                  5      n UR                  S:X  a=  [        5       nUS:X  a%  U" UR                  5       U R                  5       5      $ U" X5      $ UR                  S:X  a,  [        UR                  SU5      U R                  S5      40 UD6$ UR                  S:X  a  [        5       nU" X5      $ [        SUR                   35      e)Nr   
regressionsingle_label_classificationmulti_label_classificationr#   zInvalid problem type: )
num_labelsproblem_typedtypetorchlongintr(   r)   r   squeezer   r'   r   RuntimeError)r+   r0   configr   r5   loss_fcts         r   ForSequenceClassificationLossr?   Y   s#   ""J"?".F!^%**eii1H!H"?F">FYY}++,Fl*9?M113V^^5EFFM22;;"=#5#5b*#Ev{{SUaZ`aa::$&..
/0C0C/DE
FFr   c                    S nUb  Ub  [        UR                  5       5      S:  a*  UR                  S5      R                  U R                  5      n[        UR                  5       5      S:  a*  UR                  S5      R                  UR                  5      nU R                  S5      nUR                  SU5      nUR                  SU5      n[        X4SU0UD6n[        X4SU0UD6nXx-   S-  nU$ )Nr   r#   r   r      )lensizer;   r(   r)   clampr   )	start_logits
end_logitsstart_positionsend_positionsr   
total_lossignored_index
start_lossend_losss	            r   ForQuestionAnsweringLossrM   t   s    J"}'@##%&*-55b9<<\=P=PQO}!!#$q()11"5889J9JKM$))!,)//=A%++A}=(mUbmflm
&zg}g`fg +q0
r   c                     U R                  SUR                  5      n UR                  S5      R                  U R                  5      nU R	                  5       n [        X40 UD6$ r.   )r'   r5   r(   r)   r$   r   )r*   r+   r=   r   s       r   ForTokenClassificationrO      sO    [[V../F[[_.F\\^Fv888r   ForCausalLMForMaskedLMForQuestionAnsweringForSequenceClassificationForImageClassificationrO   ForSegmentationForObjectDetection DeformableDetrForObjectDetection!ConditionalDetrForObjectDetectionDabDetrForObjectDetectionGroundingDinoForObjectDetectionConditionalDetrForSegmentationRTDetrForObjectDetectionRTDetrV2ForObjectDetectionDFineForObjectDetectionCsmForConditionalGeneration)N)Nr`   N)typingr   r8   torch.nnr   r   r   loss_d_finer   loss_deformable_detrr   r	   loss_for_object_detectionr
   r   loss_grounding_dinor   loss_rt_detrr   Tensorr:   r   r,   r/   r?   rM   rO   LOSS_MAPPING r   r   <module>rk      s&      / 4 i R D 6 )-	LLLL ! 	 \\$ )-+/  !	
  5<<( \\< )-LLLL  !	
 *G%,, Gu|| Gjojvjv G6&95<< 9?? 4  !>	
 ; 4 * 0 '(L ()M  !E &'J %&G  < !">  :!" "?#r   