
    
Ng4                         d dl Z d dlZd dlmZ d dlZd dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ  G d d	e j                  Zed
k    r e j        d           dS dS )    N)assert_allclose)TensorProtohelpernumpy_helper)onnx_opset_version)ReferenceEvaluator)update_model_dims)(replace_initializer_by_constant_of_shapec                   @    e Zd ZddZd Zd Zd Zd Zd Zd	 Z	d
 Z
dS )TestToolsFunctionsreturnNc                    t          j        dddgdgddgddg          }t          j        |gdt          j        dt          j        g d	          t          j        dt          j        g d
          gt          j        dt          j        g d          g          }t          j        |d          }t          j        |g dg d
ddg di          }t          j
                            |           |                     |j        j        d         j        j        j        j        d         j        d           |                     |j        j        d         j        j        j        j        d         j        d           |                     |j        j        d         j        j        j        j        d         j        d           |                     |j        j        d         j        j        j        j        d         j        d           d S )NConvxWy      )inputsoutputskernel_shapestridestest)   r      r   )r   r   r   r   )r   r   r   r   )producer_name)r   r   x1)r   r   )r   r   r   r   r   r   x_3y_2y_3)r   	make_node
make_graphmake_tensor_value_infor   FLOAT
make_modelr	   update_inputs_outputs_dimsonnxcheckercheck_modelassertEqualgraphinputtypetensor_typeshapedim	dim_paramoutput)selfnode_def	graph_def	model_defupdated_defs        P/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/test/tools_test.pytest_update_inputs_outputs_dimz1TestToolsFunctions.test_update_inputs_outputs_dim   s   #:EQF
 
 
 %J-c;3DlllSS-c;3DlllSS *30A<<<PPQ
 
	 %ivFFF	'B%%%!\\ 
 ^^^	
 	
 	  ---#A&+7=A!DNPT	
 	
 	
 	#A&+7=A!DNPU	
 	
 	
 	$Q',8>B1EOQV	
 	
 	
 	$Q',8>B1EOQV	
 	
 	
 	
 	
    c                 V   t           j        }t           j                            dd                              |          }t          j        |d          }t          j        dg|          }t          j        |d          }t          j	        dt          j        d d g          }t          j	        d	t          j        d g          }t          j        d
ddgdg          }t          j        dddgd	g          }t          j        ||gd|g|g||g          }	t          j        |	          }
t          j        g d                              t           j                                      d          }t!          |
          }|                    d d|i          d         }t%          |
          }d |j        j        D             }|                     d|           t!          |          }d|d d d d f<   d|dd d f<   |                    d d|i          d         }t-          ||           d S )Nr   d   Anamer   dtypeCXYMatMulAXSublrr   r      r   r   rK   r   r   r   c                     h | ]	}|j         
S  op_type.0ns     r9   	<setcomp>z>TestToolsFunctions.test_replace_initializer.<locals>.<setcomp>O       999Aai999r;   ConstantOfShape      @      ?npfloat32randomrandnastyper   
from_arrayarrayr   r$   r   r%   r"   r#   r&   reshaper   runr
   r,   nodeassertInr   )r4   rB   valuer>   rC   rD   rE   node1node2r,   r7   r   oinf1y1repl
node_typesoinf2y2s                     r9   test_replace_initializerz+TestToolsFunctions.test_replace_initializer=   s   
	3''..u55#E444!E***#E444)#{/@4,OO)#{/@4&II C:v>> scU;;!5%.$aS1a&II%e,,	H'''((//
;;CCFKK"9--YYtc1X&&q)7	BB99999
'444"4((111aaa41aaa4YYtc1X&&q)Br;   c                    t           j        }t           j                            dd                              |          }t          j        |d          }t          j        dg|          }t          j        |d          }t          j	        dt          j        d d g          }t          j	        d	t          j        d g          }t          j        d
g dg|          }t          j        dddgdg          }t          j        dddgd	g          }	t          j        |||	gd|g|g|g          }
t          j        |
          }t          j        g d                              t           j                                      d          }t!          |          }|                    d d|i          d         }t%          |          }d |j        j        D             }|                     d|           t!          |          }d|d d d d f<   d|dd d f<   |                    d d|i          d         }t-          ||           d S )Nr   r=   r>   r?   r   rA   rC   rD   rE   Constantre   rF   rG   rH   rI   rJ   rL   r   c                     h | ]	}|j         
S rN   rO   rQ   s     r9   rT   z;TestToolsFunctions.test_replace_constant.<locals>.<setcomp>j   rU   r;   rV   rW   rX   rY   r4   rB   re   r>   rC   rD   rE   node0rf   rg   r,   r7   r   rh   ri   rj   rk   rl   rm   s                      r9   test_replace_constantz(TestToolsFunctions.test_replace_constantW   s   
	3''..u55#E444!E***#E444)#{/@4,OO)#{/@4&II R#a@@@ C:v>> scU;;!5%"7sQC!MM%e,,	H'''((//
;;CCFKK"9--YYtc1X&&q)7	BB99999
'444"4((111aaa41aaa4YYtc1X&&q)Br;   c                    t           j        }t           j                            dd                              |          }t          j        |d          }t          j        dg|          }t          j        |d          }t          j	        dt          j        d d g          }t          j	        d	t          j        d g          }t          j        d
g dg|          }t          j        dddgdg          }t          j        dddgd	g          }	t          j        |||	gd|g|g|g          }
t          j        |
          }t          j        g d                              t           j                                      d          }t!          |          }|                    d d|i          d         }t%          |d          }d |j        j        D             }|                     d|           |                     d|           t!          |          }|                    d d|i          d         }t/          |j        |j                   d S )Nr   r=   r>   r?   r   rA   rC   rD   rE   rp   rq   rF   rG   rH   rI   rJ   rL   r   T	use_rangec                     h | ]	}|j         
S rN   rO   rQ   s     r9   rT   z8TestToolsFunctions.test_replace_range.<locals>.<setcomp>   rU   r;   RangerV   )rZ   r[   r\   r]   r^   r   r_   r`   r   r$   r   r%   r"   r#   r&   ra   r   rb   r
   r,   rc   rd   assertNotInr   r0   rs   s                      r9   test_replace_rangez%TestToolsFunctions.test_replace_ranger   s   
	3''..u55#E444!E***#E444)#{/@4,OO)#{/@4&II R#a@@@ C:v>> scU;;!5%"7sQC!MM%e,,	H'''((//
;;CCFKK"9--YYtc1X&&q)7	TRRR99999
gz****J777"4((YYtc1X&&q)"(+++++r;   c           
         t           j        }t           j                            dd                              |          }t          j        |d          }t          j        dg|          }t          j        |d          }t          j	        dt          j        d d g          }t          j	        d	t          j        d g          }t          j        d
g dg|          }t          j        d
g dg|          }t          j        dddgdg          }	t          j        dddgd	g          }
t          j        dt                                t          j        dd          g}t          j        dddgd	g|||	|
g|          }t          j        ddgd	gd          }t          j        |gd|g|g|g          }t          j        ||g|          }t          j        g d                              t           j                                      d          }t'          |          }|                    d d|i          d         }t+          |          }d |j        d         j        D             }|                     d|           t'          |          }d|d d d d f<   d|dd d f<   |                    d d|i          d         }t3          ||           d S )Nr   r=   r>   r?   r   rA   rC   rD   rE   rp   rq   rF   rG   rH    customunittestdomainrI   	functionsopset_importsrJ   rL   r   c                     h | ]	}|j         
S rN   rO   rQ   s     r9   rT   zDTestToolsFunctions.test_replace_constant_function.<locals>.<setcomp>       @@@Aai@@@r;   rV   rW   rX   )rZ   r[   r\   r]   r^   r   r_   r`   r   r$   r   r%   r"   make_opsetidr   make_functionr#   r&   ra   r   rb   r
   r   rc   rd   r   r4   rB   re   r>   rC   rD   rE   nodeCrt   rf   rg   r   fctrc   r,   r7   r   rh   ri   rj   rk   rl   rm   s                          r9   test_replace_constant_functionz1TestToolsFunctions.test_replace_constant_function   s   
	3''..u55#E444!E***#E444)#{/@4,OO)#{/@4&II R#a@@@ R#a@@@ C:v>> scU;;$6$8$899!,,
 "EEE5%(
 
 
SEC5JJJ!4&$aS1#>>%cU-
 
 
	 H'''((//
;;CCFKK"9--YYtc1X&&q)7	BB@@):)?@@@
'444"4((111aaa41aaa4YYtc1X&&q)Br;   c           
         t           j        }t           j                            dd                              |          }t          j        |d          }t          j        dg|          }t          j        |d          }t          j	        dt          j        d d g          }t          j	        d	t          j        d g          }t          j        d
g dg|          }t          j        d
g dg|          }t          j        dddgdg          }	t          j        dddgd	g          }
t          j        dt                                t          j        dd          g}t          j        dddgd	g|||	|
g|          }t          j        ddgd	gd          }t          j        |gd|g|g|g          }t          j        ||g|          }t          j        g d                              t           j                                      d          }t'          |          }|                    d d|i          d         }t+          |d          }d |j        d         j        D             }|                     d|           |                     d|           t'          |          }|                    d d|i          d         }t5          |j        |j                   d S )Nr   r=   r>   r?   r   rA   rC   rD   rE   rp   rq   rF   rG   rH   r~   r   r   r   rI   r   rJ   rL   r   Trw   c                     h | ]	}|j         
S rN   rO   rQ   s     r9   rT   zATestToolsFunctions.test_replace_range_function.<locals>.<setcomp>   r   r;   rz   rV   )rZ   r[   r\   r]   r^   r   r_   r`   r   r$   r   r%   r"   r   r   r   r#   r&   ra   r   rb   r
   r   rc   rd   r{   r   r0   r   s                          r9   test_replace_range_functionz.TestToolsFunctions.test_replace_range_function   s   
	3''..u55#E444!E***#E444)#{/@4,OO)#{/@4&II R#a@@@ R#a@@@ C:v>> scU;;$6$8$899!,,
 "EEE5%(
 
 
SEC5JJJ!4&$aS1#>>%cU-
 
 
	 H'''((//
;;CCFKK"9--YYtc1X&&q)7	TRRR@@):)?@@@
gz****J777"4((YYtc1X&&q)"(+++++r;   c                    t          j        dgt           j                  }t          j        |d          }t          j        dt          j        j	        d d g          }t          j        dt          j        j	        d g          }t          j
        ddgdg          }t          j
        d	ddgd
g          }t          j        dt          j        j	        d           }t          j        t          j        dgdz                                t           j                            }t          j
        dg dg|d          }	t          j        |	gdg |g          }
t          j        dt          j        j	        d           }t          j        t          j        dgdz                                t           j                            }t          j
        dg dg|d          }t          j        |gdg |g          }t          j        
                    dd
gdg|
|          }t          j        |||gd|g|g|g          }t          j        |t          j        dt                                g          }|                     dt#          |                     t          j        dt           j                  }t'          |          }|                    d d|i          d         }t+          |          }|                     dt#          |                     t'          |          }|                    d d|i          d         }|                                }d|d d <   t1          ||           d S )Nr   rA   zeror?   rD   rE   	ReduceSumrsumGreatercondthen_outr      rp   cst1r   r   re   r@   	then_bodyelse_outr   cst2	else_bodyIfthen_branchelse_branchifr~   r   rV   rL   rX   )rZ   r`   r[   r   r_   r   r$   r(   r   r%   r"   r^   r#   r&   r   r   r{   stronesr   rb   r
   rd   copyr   r4   re   r   rD   rE   r   r   r   then_cstthen_const_noder   r   else_cstelse_const_noder   if_noder,   
onnx_modelr   rh   ri   rj   rl   rm   s                           r9   test_replace_constant_graphz.TestToolsFunctions.test_replace_constant_graph   s$   !BJ///&u6:::)#t/?/Ed|TT)#t/?/EvNNcUVH==	FF+;fXFF0(.
 
  *28QC#I+>+>+E+Ebj+Q+QRR *rJ<xf
 
 
 %&7b8*UU	0(.
 
  *28RD3J+?+?+F+Frz+R+RSS *rJ<xf
 
 
 %&7b8*UU	+''6(SEyi ( 
 
 !4w"7sQC$PP&&"5b:L:N:N"O"O!P
 
 

 	*C
OO<<<GF"*---":..YYtc1X&&q)7
CC'T333"4((YYtc1X&&q)WWYY111Br;   c                    t          j        dgt           j                  }t          j        |d          }t          j        dt          j        j	        d d g          }t          j        dt          j        j	        d g          }t          j
        ddgdg          }t          j
        d	ddgd
g          }t          j        dt          j        j	        d           }t          j        t          j        dgdz                                t           j                            }t          j
        dg dg|d          }	t          j        |	gdg |g          }
t          j        dt          j        j	        d           }t          j        t          j        dgdz                                t           j                            }t          j
        dg dg|d          }t          j        |gdg |g          }t          j        
                    dd
gdg|
|          }t          j        |||gd|g|g|g          }t          j        |t          j        dt                                g          }|                     dt#          |                     t          j        dt           j                  }t'          |          }|                    d d|i          d         }t+          |d          }|                     dt#          |                     |                     dt#          |                     t'          |          }|                    d d|i          d         }t/          |j        |j                   d S ) Nr   rA   r   r?   rD   rE   r   r   r   r   r   r   r   rp   r   r   r   r   r   r   r   r   r   r   r~   r   rV   rL   Trw   rz   )rZ   r`   r[   r   r_   r   r$   r(   r   r%   r"   r^   r#   r&   r   r   r{   r   r   r   rb   r
   rd   r   r0   r   s                           r9   test_replace_range_graphz+TestToolsFunctions.test_replace_range_graph  s/   !BJ///&u6:::)#t/?/Ed|TT)#t/?/EvNNcUVH==	FF+;fXFF0(.
 
  *28QC#I+>+>+E+Ebj+Q+QRR *rJ<xf
 
 
 %&7b8*UU	0(.
 
  *28RD3J+?+?+F+Frz+R+RSS *rJ<xf
 
 
 %&7b8*UU	+''6(SEyi ( 
 
 !4w"7sQC$PP&&"5b:L:N:N"O"O!P
 
 

 	*C
OO<<<GF"*---":..YYtc1X&&q)7
dSSS*CII666gs4yy)))"4((YYtc1X&&q)"(+++++r;   )r   N)__name__
__module____qualname__r:   rn   ru   r|   r   r   r   r   rN   r;   r9   r   r      s        (
 (
 (
 (
T     4     6, , ,4*  *  * X), ), ),V/  /  / b., ., ., ., .,r;   r   __main__r   )	verbosity)r   numpyrZ   numpy.testingr   r(   r   r   r   	onnx.defsr   onnx.referencer   
onnx.toolsr	   onnx.tools.replace_constantsr
   TestCaser   r   mainrN   r;   r9   <module>r      s  
      ) ) ) ) ) )  2 2 2 2 2 2 2 2 2 2 ( ( ( ( ( ( - - - - - - ( ( ( ( ( ( Q Q Q Q Q Qp, p, p, p, p,* p, p, p,f	 zHMA r;   