
    <h                        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\\R&                     S\S\R&                  4
S jjr   S-S\S\\R&                     S\S\\R&                     S\R&                  4
S jjr  S,S\R&                  S\R&                  S\S\\R&                     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*\_\\S+.Erg).    )OptionalN)BCEWithLogitsLossMSELoss   )DFineForObjectDetectionLoss)$DeformableDetrForObjectDetectionLoss!DeformableDetrForSegmentationLoss)ForObjectDetectionLossForSegmentationLoss)#GroundingDinoForObjectDetectionLoss)RTDetrForObjectDetectionLosssourcetargetnum_items_in_batchignore_indexreturnc                     Ub  SOSn[         R                  R                  XX5S9nUS:X  a:  [        R                  " U5      (       a  UR                  UR                  5      nXb-  nU$ )Nsummean)r   	reduction)nn
functionalcross_entropytorch	is_tensortodevice)r   r   r   r   kwargsr   losss          T/var/www/html/shao/venv/lib/python3.13/site-packages/transformers/loss/loss_utils.pyfixed_cross_entropyr!      sc     ,7VI==&&vL&fDE??-..!3!6!6t{{!C(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viewr   r   r!   )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    ForMaskedLMLossr1   G   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dtyper   longintr   r   r   squeezer!   r+   r   RuntimeError)r-   r2   configr   r7   loss_fcts         r    ForSequenceClassificationLossr@   \   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    ForQuestionAnsweringLossrN   w   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$ r0   )r+   r7   r   r   r(   r!   )r,   r-   r>   r   s       r    ForTokenClassificationrP      sO    [[V../F[[_.F\\^Fv888r"   ForCausalLMForMaskedLMForQuestionAnsweringForSequenceClassificationForImageClassificationForVideoClassificationrP   ForSegmentationForObjectDetection DeformableDetrForObjectDetection!ConditionalDetrForObjectDetectionDabDetrForObjectDetectionGroundingDinoForObjectDetection!MMGroundingDinoForObjectDetectionConditionalDetrForSegmentationRTDetrForObjectDetectionRTDetrV2ForObjectDetection)DFineForObjectDetectionCsmForConditionalGeneration)N)Nrc   N)typingr   r   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.   r1   r@   rN   rP   LOSS_MAPPING r"   r    <module>rn      sC      / 4 i R D 6 26	LLLL !. 	 \\* 26+/  !.	
  5<<( \\< 26LLLL  !.	
 *G%,, Gu|| Gjojvjv G6&95<< 9?? 4  !>	
 ; ; 4 * 0 '(L ()M  !E &'J ()L %&G   <!" !">#$  ;#2'r"   