
    h                     f    S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  \" \
5      r " S S\	5      rg)	    )	getLogger)FusionAttentionVae)FusionOptions)
ModelProto)UnetOnnxModelc                   Z   ^  \ rS rSrSS\S\S\4U 4S jjjrSS\S-  4S jjrS	 r	S
r
U =r$ )VaeOnnxModel   model	num_headshidden_sizec                 Z   > US:X  a  US:X  d  US:  a  X2-  S:X  d   e[         TU ]  XUS9  g )Nr   )r   r   )super__init__)selfr   r   r   	__class__s       a/var/www/fran/franai/venv/lib/python3.13/site-packages/onnxruntime/transformers/onnx_model_vae.pyr   VaeOnnxModel.__init__   s:    Q;!#3Q;KbfgKghhM    Noptionsc                 d    [        X R                  U R                  5      nUR                  5         g N)r   r   r   apply)r   r   self_attention_fusions      r   fuse_multi_head_attention&VaeOnnxModel.fuse_multi_head_attention   s%     249I9I4>> Z##%r   c                     0 n/ SQnU H!  nU R                  U5      n[        U5      X'   M#     [        R                  SU 35        U$ )z(
Returns node count of fused operators.
)	Attention	GroupNormSkipGroupNormNhwcConvzOptimized operators:)get_nodes_by_op_typelenloggerinfo)r   op_countopsopnodess        r   get_fused_operator_statistics*VaeOnnxModel.get_fused_operator_statistics   sR     
 B--b1Eu:HL  	*8*56r    )r   r   r   )__name__
__module____qualname____firstlineno__r   intr   r   r   r*   __static_attributes____classcell__)r   s   @r   r	   r	      sB    Nj NS N3 N N&1E &
 r   r	   N)loggingr   fusion_attention_vaer   fusion_optionsr   onnxr   onnx_model_unetr   r-   r$   r	   r,   r   r   <module>r9      s,     3 (  )	8	= r   