o
    *j
                     @   s   d dl mZmZ d dlZd dlZd dlmZmZ d dl	m
Z
 d dlmZ d dlmZ dgZe
jejejdG d	d deZdS )
    )AnyDictN)Heads
TaskModels)MODELS)EncoderModel)TasksModelForFillMask)module_namec                       sh   e Zd ZejZejZdgZddgZ											d fdd	Z
dd Zd	d
 Z	dddZ  ZS )r	   Zpoolerposition_idszpredictions.decoder.biasNc              
      s.   t  j|||||||||	f	i |}||_|S N)superforward	input_ids)selfr   attention_maskZtoken_type_idsr   Z	head_maskZinputs_embedslabelsZoutput_attentionsZoutput_hidden_statesZreturn_dictkwargsZoutputs	__class__ l/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/nlp/task_models/fill_mask.pyr      s   zModelForFillMask.forwardc                 C   s   | j jjjS r   headclsZpredictionsdecoder)r   r   r   r   get_output_embeddings/   s   z&ModelForFillMask.get_output_embeddingsc                 C   s   || j jj_d S r   r   )r   Znew_embeddingsr   r   r   set_output_embeddings2   s   z&ModelForFillMask.set_output_embeddingsc                 K   s   |j }|d }| jjd u rtd|j d }tj|||dfgdd}tj|df| jjtj|j	d}tj||gdd}||dS )Nr   z.The PAD token should be defined for generation   )dim)Zdtypedevice)r   r   )
shapeconfigZpad_token_id
ValueErrortorchcatZ	new_zerosfulllongr!   )r   r   r   Zmodel_kwargsZinput_shapeZeffective_batch_sizeZattention_shape0Zdummy_tokenr   r   r   prepare_inputs_for_generation5   s$   


z.ModelForFillMask.prepare_inputs_for_generation)
NNNNNNNNNNr   )__name__
__module____qualname__r   	fill_masktaskr   Z	head_typeZ"_keys_to_ignore_on_load_unexpectedZ_keys_to_ignore_on_load_missingr   r   r   r)   __classcell__r   r   r   r   r	      s*    )typingr   r   numpynpr%   Zmodelscope.metainfor   r   Zmodelscope.models.builderr   Z,modelscope.models.nlp.task_models.task_modelr   Zmodelscope.utils.constantr   __all__Zregister_moduler-   r	   r   r   r   r   <module>   s   