o
    *j                     @   s   d dl mZ d dlZd dlm  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mZ d dlmZ ejejejd	ejejejd	ejejejd	ejejejd	G d
d de
ZdS )    )DictN)nn)Heads)	TorchHead)HEADS)&AttentionTextClassificationModelOutputModelOutputBase
OutputKeys)Tasks)module_namec                       sN   e Zd Z			d fdd	Z		ddefddZd	ejd
ejfddZ  Z	S )TextClassificationHead   皙?Nc                    s<   t  j|||d |d usJ t|| _t||| _d S )N)hidden_sizeclassifier_dropout
num_labels)super__init__r   ZDropoutdropoutZLinear
classifier)selfr   r   r   kwargs	__class__ u/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/nlp/heads/text_classification_head.pyr      s   zTextClassificationHead.__init__inputsc                 K   sF   |j }| |}| |}d }|d ur| ||}t|||j|jdS )N)losslogitshidden_states
attentions)pooler_outputr   r   compute_lossr   r   r    )r   r   Zattention_masklabelsr   r!   r   r   r   r   r   forward'   s   

zTextClassificationHead.forwardr   returnc                 C   s   t ||S )N)FZcross_entropy)r   r   r#   r   r   r   r"   :   s   z#TextClassificationHead.compute_loss)r   r   N)NN)
__name__
__module____qualname__r   r   r$   torchZTensorr"   __classcell__r   r   r   r   r      s    

r   )typingr   r*   Ztorch.nn.functionalr   Z
functionalr&   Zmodelscope.metainfor   Zmodelscope.models.baser   Zmodelscope.models.builderr   Zmodelscope.outputsr   r   r	   Zmodelscope.utils.constantr
   Zregister_moduleZtext_classificationZsentence_similarityZnliZsentiment_classificationr   r   r   r   r   <module>   s(   