o
    *j                     @   s   d dl Z d dlmZ d dl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 dd	lmZmZ e Ze	jejejd
G dd deZdS )    N)Models)Model)MODELS)&AttentionTextClassificationModelOutput)logger)Tasks   )MGeoMGeoPreTrainedModel)module_namec                       sT   e Zd Z		ddedef fddZ												ddefd	d
Z  ZS )MGeoForTextRankingsingle-modalr   finetune_modegis_numc           	   	      s   t  | |dd}|dd}|| _|| _t| | jt| j||dd |j	d ur.|j	n|j
}t|| _t|jd| _|   d S )N
neg_sample   eval_neg_sampleT)Zadd_pooling_layerr   )super__init__getr   r   setattrZbase_model_prefixr	   configclassifier_dropoutZhidden_dropout_probnnZDropoutdropoutZLinearZhidden_size
classifierZ	post_init)	selfr   r   r   argskwargsr   r   r   	__class__ p/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/multi_modal/mgeo/text_ranking.pyr      s   zMGeoForTextRanking.__init__Nreturnc                 O   s   | j j||||||||	|
||d}|d }| |}| |}| j jrK|d| jd }|d}tj	
 }tj|tj|jd}|||}t||dS t|dS )N)	input_idsattention_masktoken_type_idsposition_ids	head_maskinputs_embedsoutput_attentionsoutput_hidden_statesreturn_dictgis_listgis_tpr   r   )Zdtypedevice)losslogits)r2   )Z
base_modelforwardr   r   Ztrainingviewr   sizetorchr   ZCrossEntropyLossZzeroslongr0   r   )r   r$   r%   r&   r'   r(   r)   labelsr*   r+   r,   r-   r.   r   r   ZoutputsZpooled_outputr2   ZscoresZ
batch_sizeZloss_fctZtarget_labelr1   r!   r!   r"   r3   ,   s:   






zMGeoForTextRanking.forward)r   r   )NNNNNNNNNNNN)	__name__
__module____qualname__strintr   r   r3   __classcell__r!   r!   r   r"   r      s.    r   )r6   Ztorch.nnr   Ztorch.utils.checkpointZmodelscope.metainfor   Zmodelscope.modelsr   Zmodelscope.models.builderr   Zmodelscope.outputsr   Zmodelscope.utilsr   loggingZmodelscope.utils.constantr   Zbackboner	   r
   Z
get_loggerZregister_moduleZtext_rankingZmgeor   r!   r!   r!   r"   <module>   s   