o
    ´©i´  ã                   @   sB   d dl Z d dlmZ d dlmZ e dd¡G dd„ dejƒƒZdS )é    N)ÚtablesÚadaptor_classesÚLinearc                       s,   e Zd Zddef‡ fdd„Zdd„ Z‡  ZS )r   é   Úffn_dimc                    sP   t ƒ  ¡  || _|| _|| _t | j| j |¡| _t ¡ | _	t || j¡| _
d S )N)ÚsuperÚ__init__ÚkÚencoder_dimÚllm_dimÚnnr   Úlinear1ÚReLUÚreluÚlinear2)ÚselfÚdownsample_rater
   r   r   Úkwargs©Ú	__class__© úU/home/ubuntu/.local/lib/python3.10/site-packages/funasr/models/llm_asr_nar/adaptor.pyr   	   s   

zLinear.__init__c                 C   sŠ   |  ¡ \}}}|| j }|dkr|d d …d | …d d …f }|  d¡}| ¡ }| ||| j || j ¡}|  |¡}|  |¡}|  |¡}|S )Nr   é   )Úsizer	   Ú
contiguousÚviewr   r   r   )r   ÚxÚ
batch_sizeÚseq_lenÚdimÚnum_frames_to_discardr   r   r   Úforward   s   




zLinear.forward)r   )Ú__name__Ú
__module__Ú__qualname__Úintr   r!   Ú__classcell__r   r   r   r   r      s    	)ÚtorchÚtorch.nnr   Úfunasr.registerr   ÚregisterÚModuler   r   r   r   r   Ú<module>   s
    
