o
    ¤úip  ã                   @  sB   d dl mZ d dlZd dlmZ d dlmZ G dd„ dejƒZdS )é    )ÚannotationsN)Únn)Ú	AutoModelc                      sJ   e Zd Z						dd ‡ fdd„Zd!dd„Zd"dd„Zd#dd„Z‡  ZS )$ÚKlueTeacherForEmotionVADúklue/roberta-baseé   é   çš™™™™™¹?é@   NÚ
model_nameÚstrÚnum_emotionsÚintÚvad_dimÚdropoutÚfloatÚvad_head_hiddenÚattention_dropoutúfloat | Nonec           	   	     s–   t ƒ  ¡  |d ur|n|}tj|||d| _| jjj}t t 	||¡t 
¡ ¡| _t 	||¡| _t t 	||¡t ¡ t |¡t 	||¡¡| _|  ¡  d S )N)Úhidden_dropout_probÚattention_probs_dropout_prob)ÚsuperÚ__init__r   Úfrom_pretrainedÚbackboneÚconfigÚhidden_sizer   Ú
SequentialÚLinearÚTanhÚpoolerÚemotion_headÚGELUÚDropoutÚvad_headÚ_init_heads)	Úselfr   r   r   r   r   r   Ú	attn_dropÚh©Ú	__class__© úR/dataset/kemix-engine/package/face/animasync-face-v3/models/microalbert/teacher.pyr   	   s"   
	ý


üz!KlueTeacherForEmotionVAD.__init__ÚreturnÚNonec                 C  s`   | j | j| jfD ]%}| ¡ D ]}t|tjƒr,tjj|j	ddd |j
d ur,tj |j
¡ qqd S )Ng        g{®Gáz”?)ÚmeanÚstd)r    r!   r$   ÚmodulesÚ
isinstancer   r   ÚinitÚnormal_ÚweightÚbiasÚzeros_)r&   ÚmoduleÚmr+   r+   r,   r%   &   s   
€üÿz$KlueTeacherForEmotionVAD._init_headsÚ	input_idsútorch.TensorÚattention_maskÚdictc                 C  sL   | j ||d}|jd d …dd d …f }|  |¡}|  |¡|  |¡||jdœS )N)r:   r<   r   )Úemotion_logitsÚvadÚpooledÚlast_hidden_state)r   rA   r    r!   r$   )r&   r:   r<   ÚoutÚclsr@   r+   r+   r,   Úforward.   s   
üz KlueTeacherForEmotionVAD.forwardc                 C  s   t dd„ |  ¡ D ƒƒS )Nc                 s  s    | ]
}|j r| ¡ V  qd S )N)Úrequires_gradÚnumel)Ú.0Úpr+   r+   r,   Ú	<genexpr>:   s   € z6KlueTeacherForEmotionVAD.num_params.<locals>.<genexpr>)ÚsumÚ
parameters)r&   r+   r+   r,   Ú
num_params9   s   z#KlueTeacherForEmotionVAD.num_params)r   r   r   r	   r
   N)r   r   r   r   r   r   r   r   r   r   r   r   )r-   r.   )r:   r;   r<   r;   r-   r=   )r-   r   )Ú__name__Ú
__module__Ú__qualname__r   r%   rD   rL   Ú__classcell__r+   r+   r)   r,   r      s    ù

r   )Ú
__future__r   Útorchr   Útransformersr   ÚModuler   r+   r+   r+   r,   Ú<module>   s
    