
     NgV                     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     c/var/www/html/ai-engine/env/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bh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           nt          |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           nt          |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.Dq.H.HCP[PaLbLbefLfLfF
,,,,,II	
 
 =F+0(h
,,,,,II	
 
 =F+0(hz44X^A5FGG1LLOOOz44X^A5FGG1LLOOOu::??F({ !!Q&&4:+H+HIZ[\I]+^+^+fJ00777#	 E }
44EEE#OO'	  =FJ00777#	 E }
44EEE#OO'	  =Fb	595666LL"##a'':889J19MNNL#,
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#OO'	  =Fb	{+++LL"##a'':889J19MNNL#,
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   