
    Uh                     d   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   dedej&                  f
dZ	 	 	 d,dedee   dedeej&                     dej&                  f
dZ	 	 d+dej&                  dej&                  dedee   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Zy)-    )OptionalN)BCEWithLogitsLossMSELoss   )DFineForObjectDetectionLoss)$DeformableDetrForObjectDetectionLoss!DeformableDetrForSegmentationLoss)ForObjectDetectionLossForSegmentationLoss)#GroundingDinoForObjectDetectionLoss)RTDetrForObjectDetectionLosssourcetargetnum_items_in_batchignore_indexreturnc                 l    |dnd}t         j                  j                  | |||      }|dk(  r||z  }|S )Nsummean)r   	reduction)nn
functionalcross_entropy)r   r   r   r   kwargsr   losss          n/var/www/catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/transformers/loss/loss_utils.pyfixed_cross_entropyr      sF     ,7VI==&&vvL\e&fDE((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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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   ForMaskedLMLossr/   D   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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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   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 8+q0
r   c                     | j                  d|j                        } |j                  d      j                  | j                        }| j	                         } t        | |fi |S r.   )r'   r5   r(   r)   r$   r   )r*   r+   r=   r   s       r   ForTokenClassificationrO      sQ    [[V../F[[_.F\\^Fvv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   