
    %	&h                        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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eeeeeeeeeeee	eedZy)    )OptionalN)BCEWithLogitsLossMSELoss   )$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          r/var/www/pru.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.   C   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*   r/   configr   r4   loss_fcts         r   ForSequenceClassificationLossr>   X   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   ForQuestionAnsweringLossrL   s   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&   r4   r'   r(   r#   r   )r)   r*   r<   r   s       r   ForTokenClassificationrN      sQ    [[V../F[[_.F\\^Fvv888r   )ForCausalLMForMaskedLMForQuestionAnsweringForSequenceClassificationrN   ForSegmentationForObjectDetection DeformableDetrForObjectDetection!ConditionalDetrForObjectDetectionDabDetrForObjectDetectionGroundingDinoForObjectDetectionConditionalDetrForSegmentationRTDetrForObjectDetectionRTDetrV2ForObjectDetection)N)Nr\   N)typingr   r7   torch.nnr   r   r   loss_deformable_detrr   r   loss_for_object_detectionr	   r
   loss_grounding_dinor   loss_rt_detrr   Tensorr9   r   r+   r.   r>   rL   rN   LOSS_MAPPING r   r   <module>rf      sy      / 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   