
    g                         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 j                  e      Z G d de
      Zy)	    N)Optional)AttentionMask)FusionConformerAttention)FusionOptions)BertOnnxModelc                   F     e Zd Z fdZddee   def fdZd Zd Z	 xZ
S )ConformerOnnxModelc                     t         |   |||       t        |       | _        t	        | | j
                  | j                  | j                        | _        y N)super__init__r   attention_maskr   hidden_size	num_headsattention_fusion)selfmodelr   r   	__class__s       b/var/www/openai/venv/lib/python3.12/site-packages/onnxruntime/transformers/onnx_model_conformer.pyr   zConformerOnnxModel.__init__   sH    	;7+D1 8t?O?OQUQ_Q_aeatat u    optionsadd_dynamic_axesc                     |dn|j                   | j                  _         |dn|j                  | j                  _        t        |   ||       y NF)use_multi_head_attentionr   !disable_multi_head_attention_biasr   optimize)r   r   r   r   s      r   r   zConformerOnnxModel.optimize   sM    BI/W^WwWw6_E'*S*S 	? 	"23r   c                 8    | j                   j                          y r   )r   applyr   s    r   fuse_attentionz!ConformerOnnxModel.fuse_attention   s    ##%r   c                 $    | j                          y r   )adjust_reshape_and_expandr    s    r   
preprocesszConformerOnnxModel.preprocess    s    &&(r   r   )__name__
__module____qualname__r   r   r   boolr   r!   r$   __classcell__)r   s   @r   r	   r	      s,    v
4 7 4RV 4&)r   r	   )loggingtypingr   fusion_attentionr   fusion_conformer_attentionr   fusion_optionsr   onnx_model_bertr   	getLoggerr%   loggerr	    r   r   <module>r3      s7   
   * ? ( )			8	$) )r   