§
    kŠtjV  ã                   ót   — d dl mZ d dlZd dlmZ d dlmZmZ d dl	m
Z
  ee¦  «        Z G d„ de¦  «        ZdS )é    )Ú	getLoggerN)ÚFusion)ÚTensorProtoÚhelper)Ú	OnnxModelc                   ó0   ‡ — e Zd Zdefˆ fd„Zd„ Zd„ Zˆ xZS )ÚFusionReshapeÚmodelc                 ó\   •— t          ¦   «                              |dd¦  «         d| _        d S )NÚReshapeF)ÚsuperÚ__init__Úprune_graph)Úselfr
   Ú	__class__s     €úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/transformers/fusion_reshape.pyr   zFusionReshape.__init__   s-   ø€ Ý‰Œ×Ò˜ 	¨9Ñ5Ô5Ð5Ø!&ˆÔÐÐó    c                 óú  — t          j        |t           j        ¬¦  «        }| j                             dd¦  «        }t          j        dg |gt          j        dt          j	        |j
        t          |¦  «        d¬¦  «        ¬¦  «        }||j        d<   | j                             d	d
¦  «        |_        | j                             |g¦  «         | j                             |¦  «         | j        | j        |j        <   d S )N)ÚdtypeÚConstantÚconstant_shapeÚconst_tensorT)ÚnameÚ	data_typeÚdimsÚvalsÚraw)ÚinputsÚoutputsÚvalueé   r   ÚReshape_Fuse)ÚnpÚasarrayÚint64r
   Úcreate_node_namer   Ú	make_nodeÚmake_tensorr   ÚINT64ÚshapeÚbytesÚinputr   Únodes_to_removeÚextendÚnodes_to_addÚappendÚthis_graph_nameÚnode_name_to_graph_name)r   r*   Úreshape_nodeÚconcat_nodeÚshape_valueÚconstant_shape_nameÚnew_nodes          r   Úreplace_reshape_nodez"FusionReshape.replace_reshape_node   s÷   € Ý”j ­b¬hÐ7Ñ7Ô7ˆØ"œj×9Ò9¸*ÐFVÑWÔWÐÝÔ#ØØØ(Ð)ÝÔ$Ø#Ý%Ô+Ø Ô&Ý˜;Ñ'Ô'Øðñ ô ð	
ñ 
ô 
ˆð !4ˆÔ˜1ÑØ œJ×7Ò7¸	À>ÑRÔRˆÔØÔ×#Ò# [ MÑ2Ô2Ð2ØÔ× Ò  Ñ*Ô*Ð*Ø6:Ô6JˆÔ$ X¤]Ñ3Ð3Ð3r   c                 ó*	  — |j         d         |vrd S ||j         d                  }|j        dk    s0t          |j         ¦  «        dk     st          |j         ¦  «        dk    rd S | j                             |g d¢g d¢|¦  «        }|€d S |\  }}}| j                             |g d¢g d¢|¦  «        }	|	€d S |	\  }
}}g }| j                             |j         d         ¦  «        }|dk    r|                     d¦  «         | j                             |j         d         ¦  «        }|dk    r|                     d¦  «         t          |¦  «        d	k    rd S g }g }||g}t          |j         ¦  «        dk    rî| j                             |j         d	         ¦  «        €É| j                             |g d
¢g d¢|¦  «        }|€%| j                             |g d¢g d¢|¦  «        }|€d S | j                             |g d
¢g d¢|¦  «        }|€%| j                             |g d¢g d¢|¦  «        }|€d S |                     |d         |d         g¦  «         |                     d¦  «         n˜t          |j         ¦  «        d	k    r€| j                             |j         d	         ¦  «        }|€d S t          |t          j
        ¦  «        r(|                     |                     ¦   «         ¦  «         n|                     |¦  «         t          |j         ¦  «        dk    r¥| j                             |j         d         ¦  «        €€d|v rd S | j                             |g d¢g d¢|¦  «        }|€%| j                             |g d¢g d¢|¦  «        }|€d S |                     |d         g¦  «         |                     d¦  «         n˜t          |j         ¦  «        dk    r€| j                             |j         d         ¦  «        }|€d S t          |t          j
        ¦  «        r(|                     |                     ¦   «         ¦  «         n|                     |¦  «         |j         d         }d}|D ]}|j         d         |k    rd}Œ|sd S |                      |||¦  «         d| _        d S )Nr!   ÚConcaté   é   )Ú	UnsqueezeÚGatherÚShape)r   r   r   )r!   r   r   r   é   )r=   ÚMulr>   r?   )r@   r   r   r   )r=   rA   ÚSqueezeÚSlicer?   )r@   r   r   r   r   )r@   r   r!   r   )r@   r   r!   r   r   éÿÿÿÿ)r=   ÚDivr>   r?   )r;   r   r   r   )r=   rE   rB   rC   r?   )r;   r   r   r   r   TF)r,   Úop_typeÚlenr
   Úmatch_parent_pathÚget_constant_valuer0   r.   Ú
isinstancer#   ÚndarrayÚtolistr8   r   )r   r3   Úinput_name_to_nodesÚoutput_name_to_noder4   Úpath0Úunsqueeze_0Úgather_0Úshape_0Úpath1Úunsqueeze_1Úgather_1Úshape_1r*   Úgather_valueÚpath2Úpath3Úshape_nodesÚconcat_valueÚ
root_inputÚsame_shape_inputÚ
shape_nodes                         r   ÚfusezFusionReshape.fuse*   s,  € ØÔ˜aÔ Ð(;Ð;Ð;ØˆFà)¨,Ô*<¸QÔ*?Ô@ˆØÔ (Ò*Ð*­c°+Ô2CÑ.DÔ.DÀqÒ.HÐ.HÍCÐP[ÔPaÑLbÔLbÐefÒLfÐLfØˆFà”
×,Ò,ØØ,Ð,Ð,ØˆIˆIØñ	
ô 
ˆð ˆ=ØˆFà+0Ñ(ˆ�h à”
×,Ò,ØØ,Ð,Ð,ØˆIˆIØñ	
ô 
ˆð ˆ=ØˆFØ+0Ñ(ˆ�h àˆØ”z×4Ò4°X´^ÀAÔ5FÑGÔGˆØ˜1ÒÐØ�LŠL˜‰OŒOˆOà”z×4Ò4°X´^ÀAÔ5FÑGÔGˆØ˜1ÒÐØ�LŠL˜‰OŒOˆOåˆu‰:Œ:˜Š?ˆ?ØˆFàˆØˆØ Ð(ˆÝˆ{Ô Ñ!Ô! QÒ&Ð&¨4¬:×+HÒ+HÈÔIZÐ[\ÔI]Ñ+^Ô+^Ð+fØ”J×0Ò0ØØ7Ð7Ð7Ø��Ø#ñ	ô ˆEð ˆ}Øœ
×4Ò4ØØEÐEÐEØ#�O�OØ'ñ	ô �ð �=Ø�Fà”J×0Ò0ØØ7Ð7Ð7Ø��Ø#ñ	ô ˆEð ˆ}Øœ
×4Ò4ØØEÐEÐEØ#�O�OØ'ñ	ô �ð �=Ø�Fà×Ò  b¤	¨5°¬9Ð5Ñ6Ô6Ð6Ø�LŠL˜ÑÔÐÐÝ�Ô"Ñ#Ô# aÒ'Ð'Øœ:×8Ò8¸Ô9JÈ1Ô9MÑNÔNˆLØÐ#Ø�Ý˜,­¬
Ñ3Ô3ð +Ø—’˜\×0Ò0Ñ2Ô2Ñ3Ô3Ð3Ð3à—’˜\Ñ*Ô*Ð*åˆ{Ô Ñ!Ô! QÒ&Ð&¨4¬:×+HÒ+HÈÔIZÐ[\ÔI]Ñ+^Ô+^Ð+fØ�Uˆ{ˆ{Ø�à”J×0Ò0ØØ7Ð7Ð7Ø��Ø#ñ	ô ˆEð ˆ}Øœ
×4Ò4ØØEÐEÐEØ#�O�OØ'ñ	ô �ð �=Ø�FØ×Ò  b¤	˜{Ñ+Ô+Ð+Ø�LŠL˜ÑÔÐÐÝ�Ô"Ñ#Ô# aÒ'Ð'Øœ:×8Ò8¸Ô9JÈ1Ô9MÑNÔNˆLØÐ#Ø�å˜,­¬
Ñ3Ô3ð +Ø—’˜\×0Ò0Ñ2Ô2Ñ3Ô3Ð3Ð3à—’˜\Ñ*Ô*Ð*à!Ô'¨Ô*ˆ
ØÐØ%ð 	)ð 	)ˆJØÔ Ô" jÒ0Ð0Ø#(Ð øàð 	ØˆFà×!Ò! %¨°{ÑCÔCÐCð  ˆÔÐÐr   )Ú__name__Ú
__module__Ú__qualname__r   r   r8   r_   Ú__classcell__)r   s   @r   r	   r	      sl   ø€ € € € € ð'˜ið 'ð 'ð 'ð 'ð 'ð 'ðKð Kð Kð*C ð C ð C ð C ð C ð C ð C r   r	   )Úloggingr   Únumpyr#   Úfusion_baser   Úonnxr   r   Ú
onnx_modelr   r`   Úloggerr	   © r   r   ú<module>rk      s®   ðð Ð Ð Ð Ð Ð à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø  Ð  Ð  Ð  Ð  Ð  à	ˆ�8Ñ	Ô	€ð] ð ] ð ] ð ] ð ] �Fñ ] ô ] ð ] ð ] ð ] r   