
    ^j\!                        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 ddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ 	 	 d3de j6                  de j6                  de j6                  dz  dede j6                  f
dZ	 	 	 d4dede j6                  dz  dede j6                  dz  de j6                  f
dZ	 	 d3de j6                  de j6                  dede j6                  dz  def
dZde j6                  de j6                  de j6                  fdZ d Z!de j6                  fdZ"	 	 	 	 d5de j6                  de j6                  dede j6                  dz  de j6                  dz  de#de j6                  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d0ed1ee	eeeeeeeeeed2Z%y)6    N)BCEWithLogitsLossMSELoss   )DFineForObjectDetectionLoss)$DeformableDetrForObjectDetectionLoss!DeformableDetrForSegmentationLoss)Deimv2ForObjectDetectionLoss)ForObjectDetectionLossForSegmentationLoss)#GroundingDinoForObjectDetectionLoss)LwDetrForObjectDetectionLoss)RfDetrForSegmentationLoss)ParakeetForRNNTLoss)RTDetrForObjectDetectionLoss)ParakeetForTDTLoss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          g/var/www/ramen.bs-engineer-server.com/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$   ForCausalLMLossr2   1   s     \\^F""66"Fc12g113 [[Z(F$$R(L??6==1Lv|5G`Y_`DKr&   r0   r1   c                     | j                         } | j                  d|      } |j                  d      }|j                  | j                        }t	        | |||fi |}|S Nr+   )r,   r/   r    r!   r%   )r0   r1   r'   r   r   r"   r#   s          r$   ForMaskedLMLossr5   J   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)r1   r6   configr"   r;   loss_fcts         r$   ForSequenceClassificationLossrD   ^   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$   ForQuestionAnsweringLossrR   y   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 r4   )r/   r;   r    r!   r,   r%   )r0   r1   rB   r"   s       r$   ForTokenClassificationrT      sQ    [[V../F[[_.F\\^Fvv888r&   auxiliary_logitsauxiliary_loss_weightc                    t         j                  j                  | |j                  dd  dd      }t	        ||||      }|Et         j                  j                  ||j                  dd  dd      }	||t	        |	|||      z  z   }|S )NbilinearF)rH   modealign_corners)r   r   )r   r   interpolateshaper%   )
r0   r1   r   r   rU   rV   r"   upsampled_logitsr#   upsampled_auxiliary_logitss
             r$   ForSemanticSegmentationLossr`      s     }}00fll23>OV`pu0v&5GVbD #%']]%>%>6<<#4:UZ &? &
" +.A&CUdp/
 
 
 Kr&   ForSemanticSegmentationForCausalLMForMaskedLMForQuestionAnsweringForSequenceClassificationForImageClassificationForVideoClassificationForAudioClassificationrT   ForSegmentationForObjectDetectionForConditionalGeneration DeformableDetrForObjectDetection!ConditionalDetrForObjectDetectionDabDetrForObjectDetectionGroundingDinoForObjectDetection!MMGroundingDinoForObjectDetection)ConditionalDetrForSegmentationRTDetrForObjectDetectionRTDetrV2ForObjectDetectionDFineForObjectDetectionDeimv2ForObjectDetectionCsmForConditionalGenerationLwDetrForObjectDetectionParakeetForRNNTParakeetForTDTRfDetrForObjectDetectionRfDetrForInstanceSegmentation)N)Nr|   N)   NNg?)&r   torch.nnr   r   r   loss_d_finer   loss_deformable_detrr   r   loss_deimv2r	   loss_for_object_detectionr
   r   loss_grounding_dinor   loss_lw_detrr   loss_rf_detrr   	loss_rnntr   loss_rt_detrr   loss_tdtr   Tensorr?   r%   r2   r5   rD   rR   rT   r,   r`   LOSS_MAPPING r&   r$   <module>r      s      / 4 i 5 R D 6 3 * 6 ( /3	LLLL t+ 	 \\* /3(,  t+	
  ,,% \\: /3LLLL  t+	
 (G%,, Gu|| Gjojvjv G6&95<< 9 .2,0#&LLLL  t+	
 llT) ! \\.:? ? 4	
  !> ; ; ; 4 * 0  '(L ()M  !E  &'J!" ()L#$ 'H <">: <#2 <*( <%>9r&   