+
    9i	                     l    ^ RI Ht ^ RIHt ^ RIHt ^ RIHtHt ^ RI	H
t
 ]! ]4      t ! R R]4      tR# )	    )	getLogger)Fusion)FusionUtils)helpernumpy_helper	OnnxModelc                   b   a a ] tR t^t oRtRV3R lV 3R llltR	V3R lR lltR tRtVt	V ;t
# )
FusionNhwcConvzConvert Conv to NhwcConvc                    < V ^8  d   QhRS[ /# )   modelr   )format__classdict__s   "g/var/www/html/photoedit/myenv/lib/python3.14/site-packages/onnxruntime/transformers/fusion_nhwc_conv.py__annotate__FusionNhwcConv.__annotate__   s     / /i /    c                Z   < \         SV `  VR R.R 4       W n        \        V4      V n        R# )NhwcConvConvN)super__init__update_weightr   fusion_utils)selfr   r   	__class__s   &&&r   r   FusionNhwcConv.__init__   s+    
VHjA*'.r   c                6   < V ^8  d   QhRS[ RS[S[,          /# )r   
input_nameperm)strlistint)r   r   s   "r   r   r      s     
 
 
49 
r   c                   V P                   P                  R4      pVf   VR,           R,           V,           p\        P                  ! RV.V.VR7      pVP                  P                  \        P                  ! RV4      .4       V# )z&Append a Transpose node after an input	Transpose_out-inputsoutputsnamer!   )r   create_node_namer   	make_node	attributeextendmake_attribute)r   r    r!   output_name	node_nametranspose_nodes   &&&&  r   create_transpose_node$FusionNhwcConv.create_transpose_node   sw    JJ//<	#f,s2Z?K))+zlU`Tahqr  '')>)>vt)L(MNr   c                F   V P                  VP                  ^ ,          . RO4      pVP                  ^ ,          pV P                  P	                  R4      pV P                  P                  VP                  ^,          4      pVf   R# \        P                  ! V4      p\        VP                  4      ^8w  d   R# V P                  P                  V4      p	V	e   VP                  V	8X  g<   V P                  P                  VVP                  VR7      p
V
P                  ^ ,          pV P                  '       dS   VP                  ^ ^^^4      pVR,           pV P!                  VVP                  \#        VP                  4      VR7       RpM8V P                  VP                  ^,          . RO4      pVP                  ^ ,          pVR,           R,           VP                  ^ ,          ,           p\$        P&                  ! RW[.VP                  R,          OV.VR,           VP(                  ,           R	7      pVP*                  P-                  VP*                  4       R
Vn        V P                  VP                  ^ ,          . ROVP                  ^ ,          4      pV P0                  P3                  V4       WNV.pV'       d   VP3                  V4       V F&  pV P4                  V P6                  VP(                  &   K(  	  V P8                  P-                  V4       V P;                  R4       R# )r   r   N)r    to_typeoutput_name_to_node_weight_NHWC)r,   	data_typedimsvalsr'   r(   :r   NNr)   zcom.microsoft)r   r         )r   r>   r?   r   )r5   inputoutputr   r-   get_initializerr   to_arraylenshape	get_dtyper;   r   add_cast_noder   	transposeadd_initializerr#   r   r.   r,   r/   r0   domainnodes_to_removeappendthis_graph_namenode_name_to_graph_namenodes_to_addincrease_counter)r   convinput_name_to_nodesr9   input_transpose_nodenhwc_conv_inputr3   weight_tensorweightdtype	cast_nodeweight_nameweight_transpose_nodenhwc_output_name	nhwc_convoutput_transpose_noderO   nodes   &&&&              r   fuseFusionNhwcConv.fuse$   s   #99$**Q-V.55a8 JJ//
;	 

224::a=A &&}5v||!

$$_5!m&=&=&F))77*%//$7 8 I
 (..q1O%%aAq1F#n4K   '11&,,'	 !  %)!$($>$>tzz!}l$[!/66q9K$v-3dkk!nD$$#B4::b>B%&S499,	
	 	""4>>2*	 $ : :9;K;KA;NP\^b^i^ijk^l m##D),9NO  56 D6:6J6JD((3 !  .j)r   )r   r   )F)N)__name__
__module____qualname____firstlineno____doc__r   r5   r_   __static_attributes____classdictcell____classcell__)r   r   s   @@r   r   r      s&     "/ /

 
?* ?*r   r   N)loggingr   fusion_baser   r   r   onnxr   r   
onnx_modelr	   ra   loggerr    r   r   <module>ro      s.      $ %  	8	S*V S*r   