o
    )Îj0
  ã                   @   sl   d dl Z d dlZd dlmZ dZG dd„ deƒZG dd„ deƒZdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ ZdS )é    N)ÚEnumé
   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
Ú	LayerTypeé   é   é   é   é   é   é   é   N)Ú__name__Ú
__module__Ú__qualname__ZLAYER_DENSEZ	LAYER_GRUZLAYER_ATTENTIONZ
LAYER_FSMNZLAYER_SEQUENTIAL_FSMNZLAYER_FSMN_SELEZLAYER_GRU_ATTENTIONZLAYER_DFSMN© r   r   úo/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/audio/kws/farfield/model_def.pyr   
   s    r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )ÚActivationTyper   r   r   r   r   r	   N)	r   r   r   ZACTIVATION_NONEZACTIVATION_RELUZACTIVATION_TANHZACTIVATION_SIGMOIDZACTIVATION_SOFTMAXZACTIVATION_LOGSOFTMAXr   r   r   r   r      s    r   c                 C   sZ   t  d| ¡}tƒ }| |d ¡ | |d ¡ | |d ¡ | |d ¡ t  d|¡d S )z
    print layer
    Úfr   r   r   r   Úi)ÚstructÚpackÚ	bytearrayÚappendÚunpack)r   ÚbsÚbar   r   r   Úf32ToI32   s   r   c                 C   sj   | j \}}t |d ¡}t|ƒD ]"}t|ƒD ]}tt| ||f ƒƒ qt|d | ƒD ]}tdƒ q+qdS )z(
    print matrix with neon padding
    r   r   N©ÚshapeÚmathÚceilÚrangeÚprintr   )ÚwZnumrowsZnumcolsZ	numnecolsr   Újr   r   r   ÚprintNeonMatrix-   s   

ÿür%   c                 C   sX   | j d }t |d ¡}t|ƒD ]
}tt| | ƒƒ qt|d | ƒD ]}tdƒ q#dS )z(
    print vector with neon padding
    r   r   Nr   )ÚbÚsizeZnesizer   r   r   r   ÚprintNeonVector<   s   

ÿr(   c                 C   s$   |   ¡ }t|d ƒ t|d ƒ dS )z
    save dense layer
    ÚweightÚbiasN)Ú
state_dictr%   r(   )ÚlayerÚ	statedictr   r   r   Ú
printDenseJ   s   r.   c                 C   s²  |   ¡ }|d |d g}|d |d g}|d j\}}|d }|d d|…dd…f }|d ||d …dd…f }|d |d d…dd…f }t|ƒ t|ƒ t|ƒ |d	 d|…dd…f }	|d	 ||d …dd…f }
|d	 |d d…dd…f }t|
ƒ t|	ƒ t|ƒ |d d|… }|d ||d … }|d |d d… }t|ƒ t|ƒ t|ƒ |d	 d|… }|d	 ||d … }|d	 |d d… }t|ƒ t|ƒ t|ƒ dS )
z
    save gru layer
    Zweight_ih_l0Zweight_hh_l0Z
bias_ih_l0Z
bias_hh_l0r   r   Nr   r   )r+   r   r%   r(   )r,   r-   r)   r*   ZnuminsZnumoutsZw_rxZw_zxZw_xZw_rhZw_zhZw_hZb_rxZb_zxÚb_xZb_rhZb_zhZb_hr   r   r   ÚprintGRUS   s:   r0   )r   r   Úenumr   ZHEADER_BLOCK_SIZEr   r   r   r%   r(   r.   r0   r   r   r   r   Ú<module>   s   		