a
    dd1                  0   @   sR  d dl mZ d dl Z d dlZd dlmZ d dlZd dlm	Z	m
Z
mZ d dlmZ d dlZejd d dlZdZdd	 d
d	 dd	 dd	 dd	 dd	 dd	 dd	 dd	 dd	 dd	 dd	 dd	 dd	 eejddddejdddddede ejedejdddddede ejedejdd dddejd d!d"d	 ee	dd#e
dddd$d%eed&d'd(edejddd)ddede ejedejddd)ddede ejedejdd d)ddejd d!d*d	 d+d	 ee	dd#e
dddd$d%eed&d'd(edd,d)dded,ejd'd-ed,d,d)dded,ejd'd-ed,d,d)dded,ejd'd-ed,d,d)dded,ejd'd-ed,d d)ddejd d!eeddd#dd$ejddd)ddede ejedejddd)ddede ejedejdd d)ddejd d!eeddddd$ejddd d.ede ejdd d d.e ejd d!eeddd#dd$ejddd/d0dede ejddd)ddede ejdd d0d dejd d!	eeddd#dd$ejddd)ddede ejddd)ddede ejdd d)ddejd d!	eejddd/ddede ejddd/ddede ejdd d/ddejd d!eejddd)d.ede ejdd d)d.e ejd d!eejdd#d d.ed#e ejd#d d d.e ejd d!eejddd d.ede ejdd d d.e ejd d!eejd1d2d d.ed2e ejd2d d d.e ejd d!eejd1dd d.ede ejedejdd2d d.ed2e ejedejd2d2d d.ed2e ejedejd2d d d.ejd d!d3ZdS )4    )nnN)BinarizeConv1d)STFT	MelFilterLog1p)	PCENLayerz"/nfs/NAS5/best/cacha_detec/sincnet      ?c                 C   s   t  S )N)r   
Sequentialnfeatkernel r   (/nfs/NAS6/mahe/ceta-cnns/Train/models.py<lambda>       r   c                 C   s   t tddtdddddttddd	t dtj	d| |d
dt | t 
 tttj	| | |d
dt | t 
 tttj	| d|d
dt jddS )N         @     a      cATa	trainable   stride   output_sizer   r	   r   r   r   nplog10BatchNorm1dudepthwise_separable_conv1d	LeakyReLU	Dropout1dpDropoutAdaptiveMaxPool1dr
   r   r   r   r      s   
c                 C   s   t tddt jd| d dddt | d ttt j| d | dddt | ttt j| | dddt | ttt j| | dddt | ttt j| ddddt jdd	S )
Nr   r      r            r   )	r   r	   r%   ReshapeConv1dr$   r(   r)   r*   r   r   r   r   r   #   s    

c                 C   s   t tddtdddddttddd	tjd| |d
ddt j	t
dtj| | |d
ddt j	t
dtj| d|d
ddt jdd	S )Nr   r   P  r   r   r   r   Tr   r   )r   quatpr   r   )r   r	   r   r   r   r"   r#   r%   Quat_depthwise_separable_conv1dDropoutr)   r*   )fkr   r   r   r   4   s   


c                 C   s|   t tddtdddddttddd	tjd| d
ddt j	t
dtj| | d
ddt j	t
dtj| dd
ddt jdd	S Nr   r   i }  r   r   i>  r   Tr   r.   r   r   r5   r   r   r   r	   r   r   r   r"   r#   r%   r&   r8   r)   r*   r2   r   r   r   r   ?   s   


c                 C   s|   t tddtdddddttddd	tjd| d
ddt j	t
dtj| | d
ddt j	t
dtj| dd
ddt jdd	S r;   r<   r2   r   r   r   r   J   s   


c                 C   s   t tddtdddddttddd	tjd| |d
dt 	| t 
 tttj| | |d
dt 	| t 
 tttj| d|d
dt jddS )Nr   r   r3   r   i  r   r   Tr   r   r   r   r   r   r	   r   r   r   r"   r#   r%   r&   r$   r'   r(   r)   r*   r
   r   r   r   r   U   s   
c                 C   s   t tddtdddddttddd	tjd| |d
dt 	| t 
 tttj| | |d
dt 	| t 
 tttj| d|d
dt jddS Nr   r   r3   r   r   r   r   Tr   r   r   r   r   r=   r
   r   r   r   r   e   s   
c                 C   s   t tddtdddddttddd	tjd| |d
dt 	| t 
 tttj| | |d
dt 	| t 
 tttj| d|d
dt jddS )Nr   r   i  r   r   r   r   Tr   r   r   r   r   r=   r
   r   r   r   r   u   s   
c                 C   s   t tddtdddddttddd	t dtj	d| |d
dt | t 
 tttj	| | |d
dt | t 
 tttj	| d|d
dt jddS r>   r!   r
   r   r   r   r      s   
c                 C   s   t tddtdddddttddd	t tj	d| |d
dt 
| t  tttj	| | |d
dt 
| t  tttj	| d|d
dt jddS r>   )r   r	   r   r   r   r"   r#   r%   SpecNormr&   r$   r'   r(   r)   r*   r
   r   r   r   r      s   
c                 C   s   t tddtdddddttddd	tjd| d
ddt 	| t j
tdtj| | d
ddt 	| t j
tdtj| dd
ddt jddS )Nr   r   r3   r   r   r   r   Tr   r.   r   r   r5   r   r   )r   r	   r   r   r   r"   r#   r%   r&   r$   r8   r)   r*   r2   r   r   r   r      s   


c                 C   sn   t tddtdddddttddd	tjd| d
dddtj| | d
dddtj| dd
dddt j	ddS )Nr   r   r3   r   r   r   r   Tr   r.   r   )r   BNr   r   )
r   r	   r   r   r   r"   r#   r%   r7   r*   r2   r   r   r   r      s   
c                 C   s|   t tjddddtjd| |ddt | t  tt	tj| | |ddt | t  tt	tj| d|ddt j
ddS )	Nr   r   r3   sample_rater   r   r   r   )r   r	   sincnetSincConv_fastr%   r&   r$   r'   r(   r)   r*   r
   r   r   r   r      s   
r   r   r3   rA      r-   r   kernel_sizer   r5   r   r   c                 C   sz   t tddt jd| dddt | t  t jtdt j| | dddt | t  t jtdt j| ddddt jdd	S )
Nr   r   i  r.   r   rF   r5   r   r   )	r   r	   r   r1   r$   ReLUr8   r)   r*   r2   r   r   r   r      s   


r   r   r   r   Tr   r.   c                 C   s   t tddtdddddttddd	t jd| d
ddt | t 	 t j
tdt j| | d
ddt | t 	 t j
tdt j| dd
ddt jddS )Nr   r   r3   r   r   r   r   Tr   r.   r   rF   r5   r   r   )r   r	   r   r   r   r"   r#   r1   r$   rH   r8   r)   r*   r2   r   r   r   r      s   


c                 C   s   t tddtdddddttddd	t jjj	j
jd| d
ddt  t  t jdddt jjj	j
j| | d
ddt  t  t jdddt jjj	j
j| dd
ddt jddS )Nr   r   r3   r   r   r   r   Tr   r.   r   rF   r   F)r6   inplacer   r   )r   r	   r   r   r   r"   r#   	intrinsic	quantizedmodules	conv_relu
ConvReLU1dIdentityr8   r*   r2   r   r   r   r     s   
i   )rI   )rG      r,       i   )Zcwt_depthwise_64kHzZ!stft_depthwise_64kHz_ksize_specBNrawZquat_stft_depthwiseZstft_depthwise_32kHz_bighopZstft_depthwise_32kHzZstft_depthwise_ksize_FBZstft_depthwise_ksizestft_depthwise_ksize_CARIMAMZstft_depthwise_ksize_specBNZstft_depthwise_ksize_specNormZstft_depthwiseZstft_depthwise_noBN_noDOZ
sincnet_dwrC   Z
stft_nomelZ	stft_pcenstftZqat_stftZ	bool_stftz0.10z0.9z0.8z0.7z0.6z0.5z0.4z0.3z0.2z0.0)torchr   utilsr%   Zbinarized_modulesr   numpyr"   Z
filterbankr   r   r   ZPCEN_pytorchr   syspathappendrC   r)   r	   rD   r1   r$   r'   r8   r*   r#   Hardtanh	GammaSpecgetr   r   r   r   <module>   sh  	














	











  