U
    T?h                     @   sb   d dl 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 eZG dd de
ZdS )	    N)Optional)AttentionMask)FusionConformerAttention)FusionOptions)BertOnnxModelc                       sF   e Zd Z fddZdee ed fddZdd	 Zd
d Z	  Z
S )ConformerOnnxModelc                    s4   t  ||| t| | _t| | j| j| j| _d S N)super__init__r   Zattention_maskr   hidden_size	num_headsattention_fusion)selfmodelr   r   	__class__ _/var/www/html/venv/lib/python3.8/site-packages/onnxruntime/transformers/onnx_model_conformer.pyr
      s    
zConformerOnnxModel.__init__NF)optionsadd_dynamic_axesc                    s>   |d krdn|j | j_ |d kr"dn|j| j_t || d S )NF)Zuse_multi_head_attentionr   Z!disable_multi_head_attention_biasr	   optimize)r   r   r   r   r   r   r      s    zConformerOnnxModel.optimizec                 C   s   | j   d S r   )r   applyr   r   r   r   fuse_attention   s    z!ConformerOnnxModel.fuse_attentionc                 C   s   |    d S r   )Zadjust_reshape_and_expandr   r   r   r   
preprocess    s    zConformerOnnxModel.preprocess)NF)__name__
__module____qualname__r
   r   r   boolr   r   r   __classcell__r   r   r   r   r      s   r   )loggingtypingr   Zfusion_attentionr   Zfusion_conformer_attentionr   Zfusion_optionsr   Zonnx_model_bertr   	getLoggerr   loggerr   r   r   r   r   <module>   s   
