
    sg                         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y)    N)BCEWithLogitsLossMSELoss   )$DeformableDetrForObjectDetectionLoss!DeformableDetrForSegmentationLoss)ForObjectDetectionLossForSegmentationLoss)RTDetrForObjectDetectionLossnum_items_in_batchignore_indexc                 l    |dnd}t         j                  j                  | |||      }|dk(  r||z  }|S )Nsummean)r   	reduction)nn
functionalcross_entropy)sourcetargetr   r   kwargsr   losss          O/var/www/html/venv/lib/python3.12/site-packages/transformers/loss/loss_utils.pyfixed_cross_entropyr      sD    +7VI==&&vvL\e&fDE((K    
vocab_sizec                 "   | j                         } | dd dd d f   j                         }|ddd f   j                         }|j                  d|      }|j                  d      }|j                  |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sA+&113L#qr'?--/L  $$R4L$$R(L??<#6#67L|\;M|f_efDKr   c                 J   |j                   }|j                  [|dk(  rd|_        nN|dkD  rB| j                  t        j                  k(  s| j                  t        j
                  k(  rd|_        nd|_        |j                  dk(  rAt               }|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 )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   ForSequenceClassificationLossr6   2   s   ""J"?".F!^!;v||uyy?X"?F">Fl*9?M113V^^5EFD K M62D K 
		 =	="=#5#5b*#Ev{{SUaZ`a K 
		 <	<$&v.Kr   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sizer2   r!   r"   clampr   )	start_logits
end_logitsstart_positionsend_positionsr   
total_lossignored_index
start_lossend_losss	            r   ForQuestionAnsweringLossrD   J   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                         } t        | |fi |S )Nr   )r    r,   r   r   )r#   r$   r4   r   s       r   ForTokenClassificationrF   ]   sB    [[V../F[[_F\\^Fvv888r   )ForCausalLMForQuestionAnsweringForSequenceClassificationrF   ForSegmentationForObjectDetection DeformableDetrForObjectDetection!ConditionalDetrForObjectDetectionGroundingDinoForObjectDetectionConditionalDetrForSegmentationRTDetrForObjectDetection)Ni)r/   torch.nnr   r   r   loss_deformable_detrr   r   loss_for_object_detectionr   r	   loss_rt_detrr
   r1   r   r'   r6   rD   rF   LOSS_MAPPING r   r   <module>rW      s      / i R 6C VY  Z^ #9<SV$0&9 #4!>4*0(L)M'K&G <r   