
    rh                        d dl mZ d dlZd dlmZ d dlmZmZ ddlmZ ddl	m
Z
mZ ddlmZmZ ddlmZ dd	lmZ 	 	 d,d
ej&                  dej&                  deej&                     dedej&                  f
dZ	 	 	 d-dedeej&                     dedeej&                     dej&                  f
dZ	 	 d,dej&                  dej&                  dedeej&                     def
dZdej&                  dej&                  dej&                  fdZd Zdej&                  fdZi dedededededed ed!ed"ed#e
d$e
d%e
d&ed'ed(ed)ed*eeed+Zy).    )OptionalN)BCEWithLogitsLossMSELoss   )DFineForObjectDetectionLoss)$DeformableDetrForObjectDetectionLoss!DeformableDetrForSegmentationLoss)ForObjectDetectionLossForSegmentationLoss)#GroundingDinoForObjectDetectionLoss)RTDetrForObjectDetectionLosssourcetargetnum_items_in_batchignore_indexreturnc                     |dnd}t         j                  j                  | |||      }|dk(  r5t        j                  |      r|j                  |j                        }||z  }|S )Nsummean)r   	reduction)nn
functionalcross_entropytorch	is_tensortodevice)r   r   r   r   kwargsr   losss          o/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/transformers/loss/loss_utils.pyfixed_cross_entropyr!      sh     ,7VI==&&vvL\e&fDE??-.!3!6!6t{{!C((K    
vocab_sizeshift_labelsc                 6   | j                         } |9t        j                  j                  |d|      }|ddd f   j	                         }| j                  d|      } |j                  d      }|j                  | j                        }t        | |||fi |}|S )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v|5G`Y_`DKr"   r,   r-   c                     | j                         } | j                  d|      } |j                  d      }|j                  | j                        }t	        | |||fi |}|S Nr'   )r(   r+   r   r   r!   )r,   r-   r#   r   r   r   r   s          r    ForMaskedLMLossr1   G   s^     \\^F [[Z(F[[_F YYv}}%Fvv/A<ZSYZDKr"   pooled_logitsc                    |j                   }|j                  M|dk(  rd|_        n@|dkD  r4| j                  t        j                  t        j
                  fv rd|_        nd|_        | j                  |j                        } |j                  dk(  r=t               }|dk(  r% ||j                         | j                               S  |||       S |j                  dk(  r,t        |j                  d|      | j                  d      fi |S |j                  dk(  rt               } |||       S t        d|j                         )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M622;;"=#5#5b*#Ev{{SUaZ`aa::$&v..
/0C0C/DE
FFr"   c                    d }||t        |j                               dkD  r*|j                  d      j                  | j                        }t        |j                               dkD  r*|j                  d      j                  |j                        }| j                  d      }|j                  d|      }|j                  d|      }t        | |fd|i|}t        ||fd|i|}||z   dz  }|S )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 8+q0
r"   c                     | j                  d|j                        } |j                  d      j                  | j                        }| j	                         } t        | |fi |S r0   )r+   r7   r   r   r(   r!   )r,   r-   r>   r   s       r    ForTokenClassificationrP      sQ    [[V../F[[_.F\\^Fvv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"   