o
    ߥi                     @   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 ejejejdG d	d
 d
e
ZdS )    )DictN)nn)Heads)	TorchHead)HEADS)Tasks)module_namec                       sL   e Zd Z fddZdd ZdddZdejd	ee	ejf fd
dZ
  ZS )TextGenerationHeadc                    s6   t  jdi | | j}tj|d |d dd| _d S )Nhidden_size
vocab_sizeF)bias )super__init__configr   Linearlinear)selfkwargsr   	__class__r   d/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/models/nlp/heads/text_generation_head.pyr      s
   zTextGenerationHead.__init__c                 C   s   | j S Nr   )r   r   r   r   get_output_embeddings   s   z(TextGenerationHead.get_output_embeddingsNc                 K   s   |  |}|S r   r   )r   inputsr   logitsr   r   r   forward   s   
zTextGenerationHead.forwardr   returnc                 C   s   t ||S r   )Fcross_entropy)r   r   labelsr   r   r   compute_loss   s   zTextGenerationHead.compute_lossr   )__name__
__module____qualname__r   r   r   torchTensorr   strr"   __classcell__r   r   r   r   r	      s    
r	   )typingr   r&   torch.nn.functionalr   
functionalr   modelscope.metainfor   modelscope.models.baser   modelscope.models.builderr   modelscope.utils.constantr   register_moduletext_generationr	   r   r   r   r   <module>   s   