
    Bvhd                     v    d dl 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)AttentionMask)FusionConformerAttention)FusionOptions)BertOnnxModelc                   F     e Zd Z fdZddedz  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       W/RAG/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    N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   boolr   r    r#   __classcell__)r   s   @r   r   r      s+    v
4 4 4t 4&)r   r   )loggingfusion_attentionr   fusion_conformer_attentionr   fusion_optionsr   onnx_model_bertr   	getLoggerr$   loggerr    r   r   <module>r1      s4   
  * ? ( )			8	$) )r   