
    g                         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ed	efd
Z	 ddeded	efdZd Zd Zd Zeeeee
e	eeeeedZdS )    N)BCEWithLogitsLossMSELoss   )$DeformableDetrForObjectDetectionLoss!DeformableDetrForSegmentationLoss)ForObjectDetectionLossForSegmentationLoss)RTDetrForObjectDetectionLossnum_items_in_batchignore_indexc                 n    |dnd}t           j                            | |||          }|dk    r||z  }|S )Nsummean)r   	reduction)nn
functionalcross_entropy)sourcetargetr   r   kwargsr   losss          X/var/www/html/ai-engine/env/lib/python3.11/site-packages/transformers/loss/loss_utils.pyfixed_cross_entropyr      sJ    +7VI=&&vvL\e&ffDE((K    
vocab_sizec                 V   |                                  } | dd dd d f                                         }|ddd f                                         }|                    d|          }|                    d          }|                    |j                  }t          ||||fi |}|S )N.r   )float
contiguousviewtodevicer   )	logitslabelsr   r   r   r   shift_logitsshift_labelsr   s	            r   ForCausalLMLossr(       s     \\^^F#ssAAA+&1133L#qrr'?--//L  $$R44L$$R((L??<#677L|\;M|ff_effDKr   c                 B   |j         }|j        M|dk    rd|_        n?|dk    r2| j        t          j        k    s| j        t          j        k    rd|_        nd|_        |j        dk    rRt                      }|dk    r1 ||                                |                                           }ns |||           }nf|j        dk    r6t          |	                    d|          | 	                    d          fi |}n%|j        dk    rt                      } |||           }|S )Nr   
regressionsingle_label_classificationmulti_label_classificationr   )
num_labelsproblem_typedtypetorchlongintr   squeezer   r!   r   )r%   pooled_logitsconfigr   r-   loss_fctr   s          r   ForSequenceClassificationLossr7   2   s/   "J"??".F!^^!;!;v|uy?X?X"?F">Fl**99??8M1133V^^5E5EFFDD8M622DD		 =	=	="=#5#5b*#E#Ev{{SUaaZ`aa		 <	<	<$&&xv..Kr   c                 0   d }||t          |                                          dk    r-|                    d                              | j                  }t          |                                          dk    r-|                    d                              |j                  }|                     d          }|                    d|          }|                    d|          }t          | |fd|i|}t          ||fd|i|}||z   dz  }|S )Nr   r   r   r      )lensizer3   r"   r#   clampr   )	start_logits
end_logitsstart_positionsend_positionsr   
total_lossignored_index
start_lossend_losss	            r   ForQuestionAnsweringLossrE   J   s%   J"}'@##%%&&**-55b99<<\=PQQO}!!##$$q(()11"55889JKKM$))!,,)//=AA%++A}==(mmUbmflmm
&z=gg}g`fgg 8+q0
r   c                     |                      d|j                  } |                     d          }|                                 } t          | |fi |S )Nr   )r!   r-   r   r   )r$   r%   r5   r   s       r   ForTokenClassificationrG   ]   sL    [[V.//F[[__F\\^^Fvv88888r   )ForCausalLMForQuestionAnsweringForSequenceClassificationrG   ForSegmentationForObjectDetection DeformableDetrForObjectDetection!ConditionalDetrForObjectDetectionGroundingDinoForObjectDetectionConditionalDetrForSegmentationRTDetrForObjectDetection)Nr   )r0   torch.nnr   r   r   loss_deformable_detrr   r   loss_for_object_detectionr   r	   loss_rt_detrr
   r2   r   r(   r7   rE   rG   LOSS_MAPPING r   r   <module>rX      s<          / / / / / / / / i i i i i i i i R R R R R R R R 6 6 6 6 6 6 C VY     Z^  #9<SV   $  0  &9 9 9 #4!>4*0(L)M'K&G < r   