U
    qh:                    @  sL  U d dl mZ d dlZd dlZd dlmZmZ 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mZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZ d dl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d dl'm(Z( d	d
dddZ)dd e* D Z+de,d< dddddZ-G dd dej.Z/G dd de/Z0e1dkrHej2dd dS )    )annotationsN)AnySequence)parameterized)ONNX_ML
GraphProto
ModelProto	NodeProtoOperatorSetIdProtoSparseTensorProtoTensorProto	TypeProtoValueInfoProtocheckerdefshelpernumpy_helper)AI_ONNX_PREVIEW_TRAINING_DOMAINONNX_DOMAINONNX_ML_DOMAINOpSchemaSchemaError)make_empty_tensor_value_info	make_nodemake_opsetidmake_tensormake_tensor_sequence_value_infomake_tensor_value_info)parse_graphr   zset[int])schemareturnc              	   C  sX   t  }t| jddD ]>}z|t| j|| jj W q tk
rP   Y  qTY qX q|S )Nr   )	setrangesince_versionaddr   Z
get_schemanamedomainr   )r   versionsversion r*   B/tmp/pip-unpacked-wheel-xnis5xre/onnx/test/shape_inference_test.pyget_available_versions1   s    r,   c                 C  s"   i | ]}|j |jtt|fqS r*   )r&   r'   	frozensetr,   ).0r   r*   r*   r+   
<dictcomp>=   s    r/   z%dict[str, tuple[str, frozenset[int]]]ALL_OP_VERSIONSstrzlist[tuple[str, int]])op_namer    c                   s8   t |  \ }|std|  t|} fdd|D S )Nz#No versions available for operator c                   s*   g | ]"}|d ks t krd| |fqS )   r)   )r   )r.   r)   r'   r*   r+   
<listcomp>H   s    z$all_versions_for.<locals>.<listcomp>)r0   
ValueErrorsorted)r2   Zversions_setr(   r*   r4   r+   all_versions_forC   s    
r8   c                   @  sd   e Zd Zddddddddd	Zd
dddddZd
ddddddZddddddZdd ZdS )TestShapeInferenceHelperNz5Sequence[str | tuple[str, TensorProto.DataType, Any]]zlist[NodeProto]zlist[ValueInfoProto]zSequence[TensorProto] | Noner   )seed_valuesnodes
value_infoinitializerr    c                 C  s   |d krg }dd |D }g }|D ]}t |trJ|d d \}}	t| }
n|tj }}	t|}
||krr||
 q"||
 |td| |	d |td| tjd tdd| d| g|gg|d d	< q"t	j
|d
|g ||dS )Nc                 S  s   h | ]
}|j qS r*   r&   r.   xr*   r*   r+   	<setcomp>^   s     z7TestShapeInferenceHelper._make_graph.<locals>.<setcomp>   ZSEED_r*   ZUNKNOWN_SHAPE_NReshaper   test)r=   r<   )
isinstancetupler   r   	UNDEFINEDr   appendINT64r   r   
make_graph)selfr:   r;   r<   r=   Znames_in_initializerinput_value_infosZ
seed_valueZ	seed_nameZ
proto_typeZseed_value_infor*   r*   r+   _make_graphU   sJ    


  z$TestShapeInferenceHelper._make_graphzGraphProto | ModelProtor   r   )graph_or_modelkwargsr    c                 K  sR   | dd}t|tr.d|d< tj|f|}n|}tjj|d|d}t	| |S )N	data_propFz	onnx-testZproducer_nameT)strict_moderQ   )
poprF   r   r   
make_modelonnxshape_inferenceinfer_shapesr   check_model)rL   rO   rP   rQ   Z
orig_modelinferred_modelr*   r*   r+   	_inferred   s    
  
z"TestShapeInferenceHelper._inferredNone)rO   visrP   r    c           	        s   t |tr|n|j}dd |D   fdd|jD | }| j|f|}t|jj}t|dd d}t|dd d}t|t|kstt	||D ]\}}| 
|j|j qd S )	Nc                 S  s   h | ]
}|j qS r*   r>   r?   r*   r*   r+   rA      s     z<TestShapeInferenceHelper._assert_inferred.<locals>.<setcomp>c                   s   g | ]}|j  kr|qS r*   r>   r?   Znames_in_visr*   r+   r5      s     
 z=TestShapeInferenceHelper._assert_inferred.<locals>.<listcomp>c                 S  s   | j S rC   r>   r@   r*   r*   r+   <lambda>       z;TestShapeInferenceHelper._assert_inferred.<locals>.<lambda>)keyc                 S  s   | j S rC   r>   r^   r*   r*   r+   r_      r`   )rF   r   graphr<   rZ   listr7   lenAssertionErrorzip_compare_value_infostype)	rL   rO   r\   rP   rb   rY   Zinferred_visvZ
inferred_vr*   r]   r+   _assert_inferred   s    z)TestShapeInferenceHelper._assert_inferredr   )vi_typeinferred_vi_typer    c                 C  s  | dr| dst|j ds*t|j ds:t|jj|jjksNt|j d|j dksjt|j drt|jjjt|jjjkstt|jjjD ]b\}}|jjj| }|jr|j|jkstd| d| dq|j	|j	kstd| d| dqn| drF| ds(t|j
j}|j
j}| || n| dr| dsbt|jj}|jj}| || nx| dr| dst|jj|jjkst| |jj|jj n0|t kr|t kstntdt|d S )	Ntensor_type	elem_typeshape
sequence_typeoptional_typemap_typez6Unrecognized value info type in _compare_value_infos: )HasFieldre   rm   rn   rd   ro   dim	enumerateZ	dim_param	dim_valuerq   rg   rr   rs   Zkey_typeZ
value_typerU   r   NotImplementedErrorr1   )rL   rk   rl   Zdim_iru   Zinferred_dimviZinferred_vir*   r*   r+   rg      sb    



  z-TestShapeInferenceHelper._compare_value_infosc                 C  s   |rt | d S rC   )pytestskip)rL   	conditionreasonr*   r*   r+   skipIf   s    zTestShapeInferenceHelper.skipIf)N)__name__
__module____qualname__rN   rZ   rj   rg   r~   r*   r*   r*   r+   r9   T   s    13r9   c                   @  s,  e Zd ZddddZdddddd	Zeed
ddddZeed
ddddZ	eed
ddddZ
eed
ddddZeed
ddddZeed
ddddZeed
ddddZddddddZeedddddZddddd d!d"Zeedddd#d$Zeed%ddd&d'Zeed%ed(ddd)d*Zeed+ddd,d-Zeed.ddd/d0Zeed.ddd1d2Zeed.ddd3d4Zeed.ddd5d6Zeed.ddd7d8Zeed9ddd:d;Zeed9ddd<d=Zeed9ddd>d?Zeed9ddd@dAZ eed9dddBdCZ!eedDdddEdFZ"eedDdddGdHZ#eedDdddIdJZ$eedDdddKdLZ%eedDdddMdNZ&eedDdddOdPZ'eedDdddQdRZ(eedDdddSdTZ)eedUdddVdWZ*eedUdddXdYZ+eedZddd[d\Z,eedZddd]d^Z-eedZddd_d`Z.eedZdddadbZ/eedZdddcddZ0eededddfdgZ1eededddhdiZ2eededddjdkZ3eededddldmZ4eededddndoZ5eededddpdqZ6eededddrdsZ7eededddtduZ8eededddvdwZ9eededddxdyZ:eededddzd{Z;eededdd|d}Z<eededdd~dZ=eedddddZ>eedddddZ?eedddddZ@eedddddZAeedddddZBeedddddZCeedddddZDeedddddZEeedddddZFeedddddZGeedddddZHeedddddZIeedddddZJddddZKeedddddZLddddZMeedddddZNeedddddZOeedddddZPeedddddZQeedddddZReedddddZSeedddddZTeedddddZUeedddddZVddddZWddddZXddddZYddddÄZZddddńZ[ddddǄZ\ddddɄZ]dddd˄Z^dddd̈́Z_ddddτZ`ddddфZaddddӄZbddddՄZcddddׄZdddddلZeddddۄZfdddd݄Zgdddd߄ZhddddZiddddZjddddZkddddZlddddZmddddZnddddZoddddZpddddZqddddZrddddZsddddZtddddZuddddZvddddZwddddZxddd dZyddddZzddddZ{ddddZ|dddd	Z}ddd
dZ~ddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddd d!Zddd"d#Zdd$dd%d&d'Zdd$dd%d(d)Zddd*d+Zddd,d-Zddd.d/Zddd0d1Zddd2d3Zddd4d5Zddd6d7Zddd8d9Zddd:d;Zddd<d=Zddd>d?Zddd@dAZdddBdCZdddDdEZdddFdGZdddHdIZdddJdKZdLdLdLdLddMdNdOZdddPdQZdLdLdLdLddMdRdSZdddTdUZdFdLdLdLdLdddWdXdYZdddZd[ZdLdLdLdLddMd\d]Zddd^d_Zddd`daZdddbdcZdddddeZdddfdgZdddhdiZdddjdkZdddldmZdddndoZdddpdqZdddrdsZdddtduZdddvdwZdddxdyZdddzd{Zddd|d}Zddd~dZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddÄZdddĐdńZdddƐdǄZdddȐdɄZdddʐd˄Zddd̐d̈́ZdddΐdτZdddАdфZdddҐdӄZdddԐdՄZddd֐dׄZdddؐdلZdddڐdۄZdddܐd݄Zdddސd߄ZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddd dZddddZddddZddddZdddd	Zddd
dZddddZddddZddddZddddZddddZ ddddZddddZddddZddddZddddZddd d!Zddd"d#Zddd$d%Zddd&d'Z	ddd(d)Z
ddd*d+Zddd,d-Zddd.d/Zddd0d1Zddd2d3Zddd4d5Zddd6d7Zddd8d9Zddd:d;Zddd<d=Zddd>d?Zddd@dAZdddBdCZdddDdEZdddFdGZdddHdIZdddJdKZdddLdMZdddNdOZdddPdQZdddddRdSZdddTdUZ ddddd dVdWZ!dddXdYZ"dddddZd[Z#ddd\d]Z$ee%j&j'e%j&j(e%j&j)gddd^d_Z*ddd`daZ+dddbdcZ,dddddeZ-dddfdgZ.dddhdiZ/ed(dddjdkZ0ee%j&j'e%j&j(e%j&j)gdddldmZ1dddndoZ2dddpdqZ3dddrdsZ4dddtduZ5dddvdwZ6dddxdyZ7dddzd{Z8ddd|d}Z9e:e;d~ddddZ<e:e;d~ddddZ=ddddZ>ddddZ?ddddZ@eje;r^edng ddddddZAeje;redng ddddddZBeje;redng ddddddZCddddddddZDddddZEddddZFddddZGddddZHddddZIddddZJddddZKddddZLddddZMddddZNddddZOddddZPddddZQddddZRddddZSddddZTddddZUddddZVddddZWddddZXddddZYddddZZddddÄZ[dddĐdńZ\dddƐdǄZ]dddȐdɄZ^dddʐd˄Z_ddd̐d̈́Z`dddΐdτZadddАdфZbdddҐdӄZcdddԐdՄZdddd֐dׄZedddؐdلZfdddڐdۄZgdddܐd݄Zhdddސd߄ZiddddZjddddZkddddZlddddZmddddZnddddZoddddZpddddZqddddZrddddZsddddZtddddZuddddZvddddZwddddZxddddZyddd dZzddddZ{ddddZ|ddddZ}dddd	Z~ddd
dZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddd d!Zddd"d#Zddd$d%Zddd&d'Zddd(d)Zddd*d+Zddd,d-Zddd.d/Zddd0d1Zddd2d3Zddd4d5Zddd6d7Zddd8d9Zddd:d;Zddd<d=Zddd>d?Zddd@dAZdddBdCZdddDdEZdddFdGZdddHdIZdddJdKZdddLdMZdddNdOZdddPdQZdddRdSZdddTdUZdddVdWZdddXdYZdddZd[Zddd\d]Zddd^d_Zddd`daZdddbdcZdddddeZdddfdgZdddhdiZdddjdkZdddldmZdddndoZdddpdqZdrds ZdddtduZdddvdwZdddxdyZdddzd{Zddd|d}Zddd~dZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZddddZeedddddZeedddddZeedddddZeedddddZeedddddZddddZddddZddddZddddZddddZddddZdddÐdĄZdddŐdƄZdddǐdȄZdddɐdʄZdddːd̄Zddd͐d΄ZdddϐdЄZdѐd҄ ZdӐdԄ ZdՐdք Zdאd؄ Zdِdڄ Zdېd܄ Zdݐdބ Zdߐd Zedd eeddD ddLdddddddd	ddZedd eeddD ddLdddddddd	ddZeddddgddLddddZeddddgddLddddZeddgddddddZeddgddddddZeddgdddddd ZddddZddddZdd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Ze:e;d~ddddZe:e;d~ddddZee&j'e&j e&j(ge:e;d~ddddZedgd ede&j d d!gd" ed#e&j d$d!gd% d&dgd% ede&j'd d!gd" ed#e&j d$d!gd% d&dgd% ede&j d'd!gd( ed#e&j d$d!gd% d&dgd% ede&j d d!gd" ed#e&j'd$d!gd% d&ge:e;d~ddd)d*Ze:e;d~ddd+d,Ze:e;d~ddd-d.Ze:e;d~ddd/d0Ze:e;d~ddd1d2Ze:e;d~ddd3d4Zddd5d6Z	ddd7d8Z
ddd9d:Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdES (G  TestShapeInferencer[   )r    c                 C  s(   |  dgg g }| tjj| j| d S )Ny)rN   assertRaisesrU   rV   InferenceErrorrZ   rL   rb   r*   r*   r+   test_empty_graph   s    z#TestShapeInference.test_empty_graphr1   r   )oprP   r    c                 K  sB   |  dtjdfgt|ddf|gg }| |tdtjdg d S )Nr@         r3   r   rN   r   FLOATr   rj   r   )rL   r   rP   rb   r*   r*   r+   _identity_prop   s     z!TestShapeInference._identity_prop	Transposec              
   C  sZ   |  dtjdfgtddgdgdddgdgg }| j|tdtjd	gtt|gd
 d S NXrB      r   r   Y   r   rB   permr   rB   r   opset_imports	rN   r   r   r   rj   r   r   r   r   rL   _r)   rb   r*   r*   r+   test_transpose   s    z!TestShapeInference.test_transposec              
   C  sf   |  dtjdfgtddgdgdddgdgtdtjd g}| j|tdtjd	gtt|gd
 d S r   )	rN   r   r   r   r   rj   r   r   r   r   r*   r*   r+   test_transpose_preexisting   s    z-TestShapeInference.test_transpose_preexistingc                 C  sP   |  dtjdfgtddgdggg }| j|tdtjdgtt|gd d S )Nr   r*   r   r   r   r   r   r*   r*   r+   test_transpose_scalar  s    z(TestShapeInference.test_transpose_scalarc              
   C  sf   |  dtjdfgtddgdgdddgdgtdtjd	g}| j|tdtjd
gtt	|gd d S )Nr   r   r   r   r   r   rB   r   )r   abr   r   )
rN   r   r   r   r   rH   rj   r   r   r   r   r*   r*   r+   test_transpose_partial  s    z)TestShapeInference.test_transpose_partialc              
   G  sT   |  dtjdfgtddgdgdddgdgtdtjd	g}| tjj| j	| d S )
Nr   r   r   r   r   r   rB   r   )r3   r3   r3   )
rN   r   r   r   r   r   rU   rV   r   rZ   rL   r   rb   r*   r*   r+   *test_transpose_preexisting_incorrect_shape&  s    z=TestShapeInference.test_transpose_preexisting_incorrect_shapec              
   G  sT   |  dtjdfgtddgdgdddgdgtdtjd	g}| tjj	| j
| d S )
Nr   r   r   r   r   r   rB   r   r   )rN   r   r   r   r   STRINGr   rU   rV   r   rZ   r   r*   r*   r+   )test_transpose_preexisting_incorrect_type/  s    z<TestShapeInference.test_transpose_preexisting_incorrect_typec              
   G  sH   |  dtjdfgtddgdgdddgdgg }| tjj| j| d S )Nr   r   r   r   r   r   r   	rN   r   r   r   r   rU   rV   r   rZ   r   r*   r*   r+   &test_transpose_incorrect_repeated_perm8  s    z9TestShapeInference.test_transpose_incorrect_repeated_permzSequence[int])shape1shape2r    c                 C  s   t t t ||t t ||j}| dtj|fdtj|fgt	dddgdggg }| j
|tdtj|gtt|gd d S Nr@   r   MatMulzr   )npmatmularangeprodreshapero   rN   r   r   r   rj   r   r   r   r   rL   r)   r   r   expected_out_shaperb   r*   r*   r+    _make_matmul_test_all_dims_knownA  s    z3TestShapeInference._make_matmul_test_all_dims_knownr   c                 C  s   |  |dd |  |dd |  |dd |  |dd |  |dd |  |dd |  |dd |  |dd	 |  |d
d	 |  |dd |  |dd	 d S )NrB   r   rB   rB   r   )r3   rB   rB   r   r   rB   rB   r   r   r   rB   r   rB   r   )r   r   rB   r3   r   r   rB   r   r   rB   r   )r   rL   r   r)   r*   r*   r+   test_matmul_all_dims_knownS  s    z-TestShapeInference.test_matmul_all_dims_known)r   r   r   r    c                 C  s\   |  dtj|fdtj|fgtdddgdggg }| j|tdtj|gtt|gd d S r   r   r   r*   r*   r+   _make_matmul_test_allow_unknownb  s    z2TestShapeInference._make_matmul_test_allow_unknownc                 C  s   |  |ddd |  |ddd |  |ddd |  |ddd |  |d	dd |  |d	d
d |  |ddd |  |ddd |  |dd d  |  |d d d  d S NrC   r*   r   r   )rB   r   )r   r   )r   r   )r   N)Nr   r   )r   rB   r3   r   r   r3   )r   r   r   rB   r   r   r   r3   )r   r   r*   r*   r+   test_matmul_allow_unknownp  s(          z,TestShapeInference.test_matmul_allow_unknownCastc              	   C  sV   |  dtjdfgtddgdgtjdgg }| j|tdtjdgtt	|gd d S )Nr@   rB   r   r   r   r   tor   )
rN   r   r   r   UINT8rj   r   r   r   r   r   r*   r*   r+   	test_cast  s    zTestShapeInference.test_castzIssue #5960c              	   C  sD   |  dtjdfgtddgdgtjdgg }| tjj| j	| d S )Nr@   r   r   r   r   )
rN   r   r   r   Z
COMPLEX128r   rU   rV   r   rZ   r   r*   r*   r+   test_cast_to_complex  s    z'TestShapeInference.test_cast_to_complexCastLikec                 C  s\   |  dtjdfdtjdfgtdddgdggg }| j|tdtjdgtt	|gd d S )Nr@   r   tNr   r   r   )
rN   r   r   FLOAT16r   rj   r   r   r   r   r   r*   r*   r+   test_cast_like  s    z!TestShapeInference.test_cast_likeCol2Imc              
   C  s   | j dtjdfdtjdfdtjdfgtddddgdggg tdtjddtdtjdd	gd
}| j|tdtjdgt	t
|gd d S )Ninput)r   r3   r3   output_shaper   kernel_shaper   outputr3   r3   r   r3   r=   r   r   r3   r3   r   rN   r   r   rJ   r   r   rj   r   r   r   r   r   r*   r*   r+   test_col2im  s*    


  zTestShapeInference.test_col2imc              
   C  s   | j dtjdfdtjdfdtjdfgtddddgdgddgd	gg tdtjdd
tdtjddgd}| j|tdtjdgt	t
|gd d S )Nr   )r   	   r   r   r   r   r   r   rB   stridesr   r   r   r   r   r   r   r   r*   r*   r+   test_col2im_strides  s,    


z&TestShapeInference.test_col2im_stridesc              
   C  s   | j dtjdfdtjdfdtjdfgtddddgdgdd	dd	gd
gg tdtjddtdtjddgd}| j|tdtjdgt	t
|gd d S )Nr   )r   r3      r   r   r   r   r   r   r   padsr   r   r   r   r   r   r   r*   r*   r+   test_col2im_pads  s,    



z#TestShapeInference.test_col2im_padsc              
   C  s   | j dtjdfdtjdfdtjdfgtddddgdgdd	gd
gg tdtjddtdtjddgd}| j|tdtjdgt	t
|gd d S )Nr   )r   r   r3   r   r   r   r   r   r   r3   	dilations   r   rB   rB   r   )r   r   r   r   r   r   r   r*   r*   r+   test_col2im_dilations  s,    


z(TestShapeInference.test_col2im_dilationsc              
   C  s   | j dtjdfdtjdfdtjdfgtddddgdggg tdtjddtdtjdd	gd
}| j|tdtjdgt	t
|gd d S )Nr   )r   
      r   r   r   r   r   r   r   r3   )r   r   r3   r   r   rB   r   r   r3   r   r   r   r*   r*   r+   test_col2im_5d  s*    


  z!TestShapeInference.test_col2im_5dConcatc              	   C  s`   |  dtjdfdtjdfgtdddgdgddgg }| j|tdtjd	gtt|gd
 d S )Nr@   r   r   )   r   r   r   r   r   axis)r   r   r   r   r   r   r*   r*   r+   test_concat.  s    zTestShapeInference.test_concatc              	   G  sR   |  dtjdfddtjdfgtddddgdgdd	gg }| tjj| j| d S )
Nr@   r   r   r   NNNr   outr   r   r   r   r*   r*   r+   test_concat_missing_shape;  s    

	z,TestShapeInference.test_concat_missing_shapec              	   C  s`   |  dtjdfdtjdfgtdddgdgddgg }| j|tdtjdgtt|gd	 d S )
Nr@   rB   rB   rB   r   r   r   rB   r   )rB   rB   r   r   r   r   r*   r*   r+   test_concat_3d_axis_2H  s    z(TestShapeInference.test_concat_3d_axis_2c              	   C  s`   |  dtjdfdtjdfgtdddgdgddgg }| j|tdtjd	gtt|gd
 d S )Nr@   r   rB   r   )r   r   r   r   r   r   )r   r3   r   r   r   r*   r*   r+   test_concat_paramU  s    z$TestShapeInference.test_concat_paramc              	   C  sT   |  dtjdfgtddgdgddgg }| j|tdtjdgtt|gd d S )Nr@   r   r   r   r   r   r   r   r   r*   r*   r+   test_concat_param_single_inputb  s    z1TestShapeInference.test_concat_param_single_inputrD   c                 C  sl   |  |dk d | dtjdfdtjdfgtdddgdggg }| j|tdtjd	gt	t
|gd
 d S )N   z'Rank inference is added from Version 14r@   r   ro   r   rD   r   NNr   )r~   rN   r   r   rJ   r   rj   r   r   r   r   r   r*   r*   r+   %test_reshape_dynamic_shape_known_ranko  s    z8TestShapeInference.test_reshape_dynamic_shape_known_rankc                 C  s\   |  dtjdfdtjdfgtdddgdggg }| j|tdtjd gtt	|gd d S )Nr@   r   ro   MrD   r   r   
rN   r   r   rJ   r   rj   r   r   r   r   r   r*   r*   r+   #test_reshape_dynamic_shape_symbolic}  s    z6TestShapeInference.test_reshape_dynamic_shape_symbolicc                 C  s\   |  dtjdfdtjd fgtdddgdggg }| j|tdtjd gtt	|gd d S )Nr@   r   ro   rD   r   r   r  r   r*   r*   r+   "test_reshape_dynamic_unknown_shape  s    z5TestShapeInference.test_reshape_dynamic_unknown_shapec              	   C  sn   | j dtjdfdtjdfgtdddgdggg tdtjddgd}| j|tdtjdgt	t
|gd	 d S )
Nr@   r   ro   r   rD   r   r      r   r   rN   r   r   rJ   r   r   rj   r   r   r   r   r   r*   r*   r+   test_reshape_static_shape  s    z,TestShapeInference.test_reshape_static_shapec              	   C  sn   | j dtjdfdtjdfgtdddgdggg tdtjddgd}| j|tdtjd	gt	t
|gd
 d S )Nr@   r   ro   r   rD   r   )r   r   r!   r   r   r   r  r   r*   r*   r+   "test_reshape_static_shape_inferred  s    z5TestShapeInference.test_reshape_static_shape_inferredc              	   C  sn   | j dtjdfdtjdfgtdddgdggg tdtjddgd}| j|tdtjdgt	t
|gd	 d S )
Nr@   r   r   r   ro   r   rD   r   r   r   r   r   r   r  r   r*   r*   r+   test_reshape_static_shape_zero  s    z1TestShapeInference.test_reshape_static_shape_zeroc              	   C  s   |  |dk d | jdtjdfdtjdfgtdddgdgd	d
gg tdtjddgd}| j|tdtjdgt	
t|gd d S )Nr  z"allowzero is added from Version 14r@   r   r   r   ro   r   rD   r   r   Z	allowzeror  r   r   )r~   rN   r   r   rJ   r   r   rj   r   r   r   r   r   r*   r*   r+   #test_reshape_static_shape_allowzero  s    

	z6TestShapeInference.test_reshape_static_shape_allowzeroc                 C  sz   |  dtjdfgtdg dgtdtjdddtdddgd	ggg }| j|tdtjdtd	tjdgt	t
|gd
 d S )Nr@   r   Constantro   r   r
  valuerD   r   r   )rN   r   r   r   r   rJ   rj   r   r   r   r   r   r*   r*   r+   "test_reshape_static_shape_constant  s&    	z5TestShapeInference.test_reshape_static_shape_constantUpsamplec                   s   dkrb dtjdfgtddgdgdddd	gd
gg  j tdtjdgttgd nj dtjdfdtj	dfgtdddgdggg t
dtj	ddgd  fdd}dkr|  n6tjj}|  W 5 Q R X |j}dt|kstd S )Nr   r@   rB   r   r   r3   r  r         ?皙??ffffff?scalesrB   r   r   r   r   r   r   r  r  r  r  r   c                     s*   j  tdtjdgttgd d S Nr   r!  r   rj   r   r   INT32r   r   r   r*   rb   rL   r)   r*   r+   call_inference  s
    z8TestShapeInference.test_upsample.<locals>.call_inferencer   Upsample is deprecated)rN   r   r&  r   rj   r   r   r   r   r   r   r   rU   r   ValidationError	exceptionr1   re   rL   r   r)   r(  cmr+  r*   r'  r+   test_upsample  s6    

z TestShapeInference.test_upsamplec                   s  dkrb dtjdfgtddgdgdddd	gd
gg  j tdtjdgttgd nj dtjdfdtj	dfgtdddgdggg t
dtj	dtjdddd	gdd ddgd  fdd}dkr|  n8tjj}|  W 5 Q R X |j}dt|kstd S )Nr   r@   r   r  r          @r  ffffff@r  r  rB   r   r   r   r   r  r   r"  r  r  <f4dtypeTvalsrawr   c                     s*   j  tdtjdgttgd d S r$  r%  r*   r'  r*   r+   r(  5  s
    zATestShapeInference.test_upsample_raw_data.<locals>.call_inferencer   r)  )rN   r   r&  r   rj   r   r   r   r   r   r   r   arraytobytesr   rU   r   r*  r+  r1   re   r,  r*   r'  r+   test_upsample_raw_data  sB    

z)TestShapeInference.test_upsample_raw_dataExpandc              	   C  sn   | j dtjdfdtjdfgtdddgdggg tdtjddgd}| j|tdtjd	gt	t
|gd
 d S )Nr@   r   r   ro   r   r;  r   )rB   r   r   r   rB   r   r   r   rN   r   r&  rJ   r   r   rj   r   r   r   r   r   r*   r*   r+   test_expandE  s    zTestShapeInference.test_expandc              	   C  sn   | j dtjdfdtjdfgtdddgdggg tdtjddgd}| j|tdtjdgt	t
|gd	 d S )
Nr@   r*   ro   r   r;  r   )r   r  r   r   r>  r   r*   r*   r+   test_expand_scalar_inputS  s    z+TestShapeInference.test_expand_scalar_inputc                 C  s   | j dtjdfdtjdfgtdddgdggg tdtjdtjddgd	d
 ddgd}| j	|t
dtjdgtt|gd d S )Nr@   r<  ro   r   r;  r   r   r   <i8r3  Tr5  r   r   r   r   )rN   r   r&  rJ   r   r   r   r8  r9  rj   r   r   r   r   r   r*   r*   r+   test_expand_raw_dataa  s$    z'TestShapeInference.test_expand_raw_datac                 C  s`   | j dtjdfdtjdfgtdddgdggg g d}| j|tdtjdgtt	|gd	 d S )
Nr@   r   rB   Nro   r   r;  r   r   )NrB   Nr   
rN   r   r&  rJ   r   rj   r   r   r   r   r   r*   r*   r+   test_expand_dynamic_shapew  s    

	z,TestShapeInference.test_expand_dynamic_shapec                 C  s`   | j dtjdfdtjdfgtdddgdggg g d}| j|tdtjd gtt	|gd d S )	Nr@   rD  ro   )unk__0r;  r   r   r   rE  r   r*   r*   r+   test_expand_symbolic_shape  s    


z-TestShapeInference.test_expand_symbolic_shapeResizec              	   C  s  |dkrv| j dtjdfdtjdfgtdddgdggg tdtjddgd	}| j|tdtjd
gt	t
|gd n|dkr| j dtjdfdtjdfdtjdfdtjdfgtdddddgdggg tdtjddgd	}| j|tdtjdgt	t
|gd nx| j dtjdfdtjdfdtjdfgtdddddgdggg tdtjddgd	}| j|tdtjdgt	t
|gd d S )Nr   r@   r  r   r"  rI  r   r#  r   r!  r      roir  sizes)r   r3   r   r    )rN   r   r&  r   r   r   rj   r   r   r   r   rJ   r   r*   r*   r+   test_resize_size  s^    










z#TestShapeInference.test_resize_sizec              	   C  s   |  |dk d | jdtjdfdtjdfdtjdfgtd	ddd
dgdgddgg tdtjddgd}| j|t	dtjdgt
t|gd d S )N   axes is from Version 18r@   r  rK  r"  rM  r   rI  rN  r   r   axesr   r   r   )rB   r   r   r   r   r~   rN   r   r&  r   rJ   r   r   rj   r   r   r   r   r   r*   r*   r+   test_resize_size_axes_2_3  s    



z,TestShapeInference.test_resize_size_axes_2_3c              	   C  s   |  |dk d | jdtjdfdtjdfdtjdfgtd	ddd
dgdgddgg tdtjddgd}| j|t	dtjdgt
t|gd d S )NrP  rQ  r@   r  rK  r"  rM  r   rI  rN  r   r   rB   rR  rT  r   )rB   r   r   r   r   rU  r   r*   r*   r+   test_resize_size_axes_3_2  s    



z,TestShapeInference.test_resize_size_axes_3_2c              	   C  s   |  |dk d | jdtjdfdtjdfdtjdfgtd	ddd
dgdgddgg tdtjddgd}| j|t	dtjdgt
t|gd d S )NrP  +keep_aspect_ratio_policy is from Version 18r@   r   r3   rK  r"  rM  r   rI  rN  r   
not_largerkeep_aspect_ratio_policyr   r   )r   r   r   rU  r   r*   r*   r+   test_resize_size_not_larger  s0    



z.TestShapeInference.test_resize_size_not_largerc              	   C  s   |  |dk d | jdtjdfdtjdfdtjdfgtd	ddd
dgdgdddgg tdtjddgd}| j|t	dtjdgt
t|gd d S )NrP  3axes & keep_aspect_ratio_policy are from Version 18r@   r  rK  r"  rM  r   rI  rN  r   r   r[  rS  r]  r   r   )rB   r   r   r   r   rU  r   r*   r*   r+   $test_resize_size_axes_2_3_not_larger  s2    



	z7TestShapeInference.test_resize_size_axes_2_3_not_largerc              	   C  s   |  |dk d | jdtjdfdtjdfdtjdfgtd	ddd
dgdgddgg tdtjddgd}| j|t	dtjdgt
t|gd d S )NrP  rY  r@   rZ  rK  r"  rM  r   rI  rN  r   not_smallerr\  r   r   )r   r   r   rU  r   r*   r*   r+   test_resize_size_not_smaller4  s0    



z/TestShapeInference.test_resize_size_not_smallerc              	   C  s   |  |dk d | jdtjdfdtjdfdtjdfgtd	ddd
dgdgdddgg tdtjddgd}| j|t	dtjdgt
t|gd d S )NrP  r_  r@   r  rK  r"  rM  r   rI  rN  r   r   rb  r`  r   r   )rB   r   r   r   r   rU  r   r*   r*   r+   %test_resize_size_axes_2_3_not_smallerQ  s2    



	z8TestShapeInference.test_resize_size_axes_2_3_not_smallerc              	   C  s   |  |dk d | jdtjdfdtjdfdtjdfgtd	dddgd
ggg tdtjddgd}| j|td
tjdgt	
t|gd d S )NrJ  roi input is from Version 11r@   r  rK  rL  r   r"  rI  r   r#  r   r!  r   r~   rN   r   r&  r   r   r   rj   r   r   r   r   r   r*   r*   r+   test_resize_scaleo  s     


z$TestShapeInference.test_resize_scalec              	   C  s   |  |dk d | jdtjdfdtjdfdtjdfgtd	dddgd
gddgg tdtjddgd}| j|td
tjdgt	
t|gd d S )NrP  rQ  r@   r  rK  rL  r   r   rI  r   r   rR  )r  r  r   r!  r   rf  r   r*   r*   r+   test_resize_scale_axes_2_3  s    



z-TestShapeInference.test_resize_scale_axes_2_3c              	   C  s   |  |dk d | jdtjdfdtjdfdtjdfgtd	dddgd
gddgg tdtjddgd}| j|td
tjdgt	
t|gd d S )NrP  rQ  r@   r  rK  rL  r   r   rI  r   rW  rR  )r  r  r   r!  r   rf  r   r*   r*   r+   test_resize_scale_axes_3_2  s    



z-TestShapeInference.test_resize_scale_axes_3_2c                 C  s   |  |dk d | jdtjdfdtjdfdtjdfgtd	dddgd
ggg tdtjdtjddddgdd	 ddgd}| j
|td
tjdgtt|gd d S )NrJ  re  r@   r   rK  rL  r   r"  rI  r   r/  r  r0  r  r2  r3  Tr5  r   r1  r   )r~   rN   r   r&  r   r   r   r   r8  r9  rj   r   r   r   r   r   r*   r*   r+   test_resize_scale_raw_data  s,    


z-TestShapeInference.test_resize_scale_raw_datac                 C  s   |  |dk d | jdtjdfdtjdfdtjdfd	tjd
fgtddddd	gdggg tdtjdtj	ddddgdd
 ddtd	tjd
tj	g dd
 ddgd}| j|tdtjdgtt|gd d S )NrJ  re  r@   r   rK  rL  r   r"  rM  r   rI  r   r/  r  r0  r  r2  r3  Tr5  rA  r   r1  r   )r~   rN   r   r&  r   rJ   r   r   r   r8  r9  rj   r   r   r   r   r   r*   r*   r+   +test_resize_scale_and_size_but_one_is_empty  s<    



z>TestShapeInference.test_resize_scale_and_size_but_one_is_emptyc                 C  s   |  |dkd | jdtjdfdtjdfdtjdfd	tjd
fgtddddd	gdggg td	tjd
tj	ddddgdd
 ddgd}| j|tdtjdgtd|gd d S )NrJ  z#This test only works for Version 11r@   r   rK  rL  r   rk  rM  r"  rI  r   rB   r   r  r   rA  r3  Tr5  r   )rB   r   r  r   rN  r   )r~   rN   r   r&  r   rJ   r   r   r   r8  r9  rj   r   r   r   r   r*   r*   r+   #test_resize_opset11_scales_is_empty  s4    




 z6TestShapeInference.test_resize_opset11_scales_is_emptyShapec                 C  sP   |  dtjdfgtddgdggg }| j|tdtjdgtt	|gd d S )Nr@   r   rn  r   r   r   
rN   r   r   r   rj   r   rJ   r   r   r   r   r*   r*   r+   
test_shape	  s    zTestShapeInference.test_shapec              	   C  sd   |  |dk d | dtjdfgtddgdgddgg }| j|tdtjd	gt	t
|gd
 d S )Nr   !start and end are from Version 15r@   r   rn  r   r   startr   r   r~   rN   r   r   r   rj   r   rJ   r   r   r   r   r*   r*   r+   test_shape_start_1  s    z%TestShapeInference.test_shape_start_1c              	   C  sd   |  |dk d | dtjdfgtddgdgddgg }| j|tdtjd	gt	t
|gd
 d S )Nr   rq  r@   r   rn  r   r   endr   r   rt  r   r*   r*   r+   test_shape_end_1$  s    z#TestShapeInference.test_shape_end_1c              	   C  sd   |  |dk d | dtjdfgtddgdgddgg }| j|tdtjd	gt	t
|gd
 d S )Nr   rq  r@   r   rn  r   r!   rr  rx  r   rt  r   r*   r*   r+   test_shape_negative_start2  s    z,TestShapeInference.test_shape_negative_startc              	   C  sd   |  |dk d | dtjdfgtddgdgddgg }| j|tdtjd	gt	t
|gd
 d S )Nr   rq  r@   r   rn  r   rr  r   r   rt  r   r*   r*   r+   test_shape_clip1@  s    z#TestShapeInference.test_shape_clip1c              	   C  sd   |  |dk d | dtjdfgtddgdgddgg }| j|tdtjd	gt	t
|gd
 d S )Nr   rq  r@   r   rn  r   r   rv  r   r   rt  r   r*   r*   r+   test_shape_clip2N  s    z#TestShapeInference.test_shape_clip2Sizec                 C  sP   |  dtjdfgtddgdggg }| j|tdtjdgtt	|gd d S )Nr@   r   r~  r   r*   r   ro  r   r*   r*   r+   	test_size\  s      zTestShapeInference.test_sizeGatherc                 C  s\   |  dtjdfdtjdfgtdddgdggg }| j|tdtjdgtt	|gd d S )	Nr@   r   r   ir   r  r   r   r   
rN   r   r   rJ   r   rj   r   r   r   r   r   r*   r*   r+   test_gatherg  s    zTestShapeInference.test_gatherc              	   C  s`   |  dtjdfdtjdfgtdddgdgddgg }| j|tdtjd	gtt	|gd
 d S )Nr@   )r   r   r3   r  r   r  r   r   r   )r   r   rB   r3   r   r  r   r*   r*   r+   test_gather_axis1t  s    z$TestShapeInference.test_gather_axis1c                 C  s\   |  dtjdfdtjdfgtdddgdggg }| j|tdtjdgtt	|gd d S )Nr@   r   r  r*   r  r   r   r  r   r*   r*   r+   test_gather_into_scalar  s    z*TestShapeInference.test_gather_into_scalarGatherElementsc              	   C  s`   |  dtjdfdtjdfgtdddgdgddgg }| j|tdtjdgtt	|gd d S )	Nr@   r   r  r  r   r   r   r   r  r   r*   r*   r+   test_gather_elements  s    z'TestShapeInference.test_gather_elementsc              	   C  s`   |  dtjdfdtjdfgtdddgdgddgg }| j|tdtjdgtt	|gd	 d S )
Nr@   r   r  r   r  r   r   r   r   r  r   r*   r*   r+   test_gather_elements_axis0  s    z-TestShapeInference.test_gather_elements_axis0Scatterc              	   C  sR   |dkrD|  tjj}| | W 5 Q R X |j}dt|ksNtn
| | d S NrJ  zScatter is deprecated)r   rU   r   r*  _test_scatterr+  r1   re   rL   r   r)   r-  r+  r*   r*   r+   test_scatter  s    zTestShapeInference.test_scatterc                 C  sh   |  dtjdfdtjdfdtjdfgtddddgdggg }| j|tdtjdgtt	|gd d S )	Nr@   r   r  r   ur  r   r   r  rL   r)   rb   r*   r*   r+   r    s    


	z TestShapeInference._test_scatterc              	   C  sR   |dkrD|  tjj}| | W 5 Q R X |j}dt|ksNtn
| | d S r  )r   rU   r   r*  _test_scatter_axis1r+  r1   re   r  r*   r*   r+   test_scatter_axis1  s    z%TestShapeInference.test_scatter_axis1c              	   C  sl   |  dtjdfdtjdfdtjdfgtddddgdgdd	gg }| j|tdtjdgtt	|gd
 d S )Nr@   r   r  r   r  r  r   r   r   r   r  r  r*   r*   r+   r    s    


	z&TestShapeInference._test_scatter_axis1ScatterElementsc                 C  sh   |  dtjdfdtjdfdtjdfgtddddgdggg }| j|tdtjdgtt	|gd d S )	Nr@   r   r  r   r  r  r   r   r  r   r*   r*   r+   test_scatter_elements  s    


	z(TestShapeInference.test_scatter_elementsc              	   C  sl   |  dtjdfdtjdfdtjdfgtddddgdgdd	gg }| j|tdtjdgtt	|gd
 d S )Nr@   r   r  r   r  r  r   r   r   r   r  r   r*   r*   r+   test_scatter_elements_axis1  s    


	z.TestShapeInference.test_scatter_elements_axis1	ScatterNDc                 C  sh   |  dtjdfdtjdfdtjdfgtddddgdggg }| j|tdtjdgtt	|gd	 d S )
Nr@   r   r3   r   indicesr   r   rB   updatesr   r   r   r  r   r   r  r   r*   r*   r+   test_scatternd   s    


	z!TestShapeInference.test_scatterndc              	   C  s   |  dtjdfdtjdfdtjdfdtjdfgtd	ddgd
gtdd
ddgdggg }| j|td
tjd tdtjd gtt	|gd d S )Nr@   r  r  r  r  r  ro   r  rD   Z
x_reshapedr  r   r   r  r   r*   r*   r+   test_scatternd_noshape  s$    



z)TestShapeInference.test_scatternd_noshapeSqueezec                 C  s   |dkr^|  dtjdfgtddddddd	gd
gg }| j|tdtjdgtt|gd nh| j dtjdfdtj	dfgtdddgdgg t
dtj	ddgd}| j|tdtjdgtt|gd d S )NrJ  r@   r   r   r   r   rB   r   r  r   r   rB   r   r3   rR  rW  r   rS  r"  )r   rB   r   r3   r   )rN   r   r   r   rj   r   r   r   r   rJ   r   r   r*   r*   r+   test_squeeze+  s2    

zTestShapeInference.test_squeezeStringConcatc                 C  sZ   |  dtjdfdtjdfgtdddgdgg }| j|tdtjdgtt|gd d S )Nr@   r   r   r  r   r   	rN   r   r   r   rj   r   r   r   r   r   r*   r*   r+   test_stringconcatJ  s    

z$TestShapeInference.test_stringconcatc                 C  sZ   |  dtjdfdtjdfgtdddgdgg }| j|tdtjdgtt|gd d S )Nr@   r   r   )r   r   r   r  r   r   r  r   r*   r*   r+   test_stringconcat_broadcastingZ  s    

z1TestShapeInference.test_stringconcat_broadcastingRegexFullMatchc              	   C  sT   |  dtjdfgtddgdgddgg }| j|tdtjdgtt	|gd d S )Nr@   r!  r  r   ^[A-Z][a-z]*$patternr   
rN   r   r   r   rj   r   BOOLr   r   r   r   r*   r*   r+   test_regex_full_matchj  s    z(TestShapeInference.test_regex_full_matchc              	   C  sT   |  dtjdfgtddgdgddgg }| j|tdtjdgtt	|gd d S )Nr@   r*   r  r   r  r  r   r  r   r*   r*   r+   !test_regex_full_match_empty_shapew  s    z4TestShapeInference.test_regex_full_match_empty_shapec                 C  sR   |  dtjdfgtddgdgg }t }d|_d|_| |tdtjdg d S )Nr@   r  r  r   rN  rJ  rW  )	rN   r   r   r   r
   r'   r)   rj   r   rL   rb   Zoperatorsetidr*   r*   r+   test_squeeze_no_axes_opset11  s    
 z/TestShapeInference.test_squeeze_no_axes_opset11c              	   C  s^   | j dtjdfdtjdfgtdddgdgg tdtjddgd}| |tdtjd	g d S )
Nr@   rW  rS  r"  	Unsqueezer   )r   r   r   r3   r   )r   r   r   r   rB   r   rN   r   r   rJ   r   r   rj   r   r   r*   r*   r+   test_unsqueeze_regular  s     z)TestShapeInference.test_unsqueeze_regularc              	   C  s^   | j dtjdfdtjdfgtdddgdgg tdtjddgd}| |tdtjd	g d S )
Nr@   r   rS  r   r  r   )r   r   r   r   r   r   r3   r   r  r   r*   r*   r+   test_unsqueeze_unsorted_axes  s     z/TestShapeInference.test_unsqueeze_unsorted_axesc              	   C  s^   | j dtjdfdtjdfgtdddgdgg tdtjddgd}| |tdtjd	g d S )
Nr@   r   rS  r   r  r   )r   r!   r   r  r  r   r*   r*   r+   test_unsqueeze_negative_axes  s     z/TestShapeInference.test_unsqueeze_negative_axesc              	   C  s^   | j dtjdfdtjdfgtdddgdgg tdtjddgd}| |tdtjdg d S )	Nr@   r*   rS  r  r   )r!   r   rx  r  r   r*   r*   r+   test_unsqueeze_scalar  s     z(TestShapeInference.test_unsqueeze_scalarc                 C  sZ   |  dtjdfdtjdfdtjdfgtddddgdggg }| |tdtjdg d S )	Nr@   )r   rB   r   startsrx  endsSlicer   r   rN   r   r   rJ   r   rj   r   r   r*   r*   r+   test_slice_without_input_shape  s    


	 z1TestShapeInference.test_slice_without_input_shapec                 C  s   | j dtjdfdtjdfdtjdfgtddddgdggg tdtjdtjdd	gd
d ddtdtjddgd}| 	|t
dtjdg d S )Nr@   rW  r  r   r  r  r   r   r   rA  r3  Tr5  r   r   r   rN   r   r   rJ   r   r   r   r8  r9  rj   r   r   r*   r*   r+   test_slice_with_input_shape  s*    


 z.TestShapeInference.test_slice_with_input_shapec              
   C  sz   | j dtjdfdtjdfdtjdfgtddddgdggg tdtjddtdtjdd	gd
}| |tdtjdg d S )Nr@   )r   r   r   r  r   r  r  r   )r   r   r   r  r   )r   Nr   r  r   r*   r*   r+   1test_slice_with_input_shape_containing_dim_params  s    


zDTestShapeInference.test_slice_with_input_shape_containing_dim_paramsc                 C  s   | j dtjdfdtjdfdtjdfdtjd fdtjdfgtddddddgd	ggg tdtjdd
tdtjddtdtjddgd}| |td	tjdg d S )Nr@   r3   r   r   r  r   r  rS  stepsr  r   r  )rB   r   r   )r   r   r   r   )r   rB   rB   r  r   r*   r*   r+   !test_slice_with_input_shape_steps  s$    




 z4TestShapeInference.test_slice_with_input_shape_stepsc                 C  s   | j dtjdfdtjdfdtjdfdtjdfdtjd fgtddddddgd	ggg tdtjdd
tdtjddtdtjddgd}| |td	tjdg d S )Nr@   )r   r   rB   r  r   r  rS  r  r  r   r   r   r   )r   rB   r   )r   r   rB   r  r   r*   r*   r+    test_slice_with_input_shape_axes
  s$    




 z3TestShapeInference.test_slice_with_input_shape_axesc                 C  s   | j dtjdfdtjdfdtjdfdtjdfgtdddddgdgg tdtjdd	tdtjdd
tdtjdd	gd}| |tdtjdg d S )Nr@   rW  r  r   r  rS  r  r   r  r   r   r   r  r   r*   r*   r+   test_slice_unsorted_axes  s"    



 z+TestShapeInference.test_slice_unsorted_axesc                 C  s   | j dtjdfdtjdfdtjdfdtjdfgtdddddgdgg tdtjdd	tdtjdd
tdtjddgd}| |tdtjdg d S Nr@   rW  r  r   r  rS  r  r   r  )   iU  r   r   r   r   r  r   r*   r*   r+   test_slice_giant_number3  s"    



 z*TestShapeInference.test_slice_giant_numberc                 C  s   | j dtjdfdtjdfdtjdfdtjdfdtjdfgtddddddgd	gg tdtjdd
tdtjddtdtjddtdtjddgd}| |td	tjdg d S )Nr@   rW  r  r   r  rS  r  r  r   r  )r  r  r  )r   r  r   r   r  r   r*   r*   r+   test_slice_giant_stepG  s&    




 z(TestShapeInference.test_slice_giant_stepc                 C  s   | j dtjdfdtjdfdtjdfdtjdfgtdddddgdgg tdtjdd	tdtjdd
tdtjddgd}| |tdtjdg d S )Nr@   rW  r  r   r  rS  r  r   r  )r  r!   r  r   r   r  r   r*   r*   r+   test_slice_negative_end]  s&    



   z*TestShapeInference.test_slice_negative_endc                 C  s   | j dtjdfdtjdfdtjdfdtjdfgtdddddgdgg tdtjdd	tdtjdd
tdtjddgd}| |tdtjdg d S )Nr@   rW  r  r   r  rS  r  r   )r   )r  r   r  r   r   r  r   r*   r*   r+   test_slice_negative_startq  s&    



   z,TestShapeInference.test_slice_negative_startc                 C  s   | j dtjdfdtjdfdtjdfdtjdfdtjdfgtddddddgd	gg tdtjdd
tdtjddtdtjddtdtjddgd}| |td	tjdg d S )Nr@   rB  r  r   r  rS  r  r  r   r   r   )r  r   r  )r   r!   r   r   r  r   r*   r*   r+   test_slice_negative_step  s*    




   z+TestShapeInference.test_slice_negative_stepc                 C  s   | j dtjdfdtjdfdtjdfdtjdfgtdddddgdgg tdtjddtdtjdd	tdtjddgd
}| |tdtjdg d S )Nr@   r   r  rx  r  rS  r  r   )r  r   )r   r   r  r   r*   r*   r+   test_slice_variable_copy  s    



z+TestShapeInference.test_slice_variable_copyc                 C  s   | j dtjdfdtjdfdtjdfdtjdfgtdddddgdgg tdtjdd	tdtjdd
tdtjddgd}| |tdtjdg d S r  )rN   r   DOUBLEr&  r   r   rj   r   r   r*   r*   r+   test_slice_variable_input_types  s"    



 z2TestShapeInference.test_slice_variable_input_typesc                 C  sl   |  dtjdfdtjdfgtdddgdddddddgdd	d	gddd	gd
gg }| |tdtjdg d S )Nr@   r   r   r3   r   r   r   r3   r   rB   r   r   Convr   r   r   rB   r   r   r   r   r3   r   r   r   r   r   r*   r*   r+   	test_conv  s&    


 zTestShapeInference.test_convc              	   C  sR   |  dtjdfdtjdfgtdddgddgdgg }| |tdtjd	g d S )
Nr@   r   r   )2   r   rB   r  r   r   r   )r   r  r   r   r   r*   r*   r+   test_conv_1d_simple  s    

 z&TestShapeInference.test_conv_1d_simplec              
   C  sV   |  dtjdfdtjdfgtdddgdddd	gd
gg }| |tdtjdg d S )Nr@   r   r   r  r  r  r   r  r   r   r   r   r  r   r   rB   r   r   r   r  r   r   rB   r   r   r*   r*   r+   test_conv_dilations  s    

 z&TestShapeInference.test_conv_dilationsc              
   C  sV   |  dtjdfdtjdfgtdddgdddd	gd
gg }| |tdtjdg d S )Nr@   r  r   r  r  r   r   rB   r   r   r   r  r   r   rB   r   r   r*   r*   r+   test_conv_strides  s    

 z$TestShapeInference.test_conv_stridesc                 C  s\   |  dtjdfdtjdfgtdddgddddd	ddgd
gg }| |tdtjdg d S )Nr@   r   r   r   r   r   r   r  r  r   r   rB   r   r   r   r  r   r   r   r   r   r*   r*   r+   test_conv_pads  s    

  z!TestShapeInference.test_conv_padsc              	   C  sP   |  dtjdfdtjdfgtdddgdddgg }| |tdtjd	g d S )
Nr@   r  r   r  r   r   r   rB   r  r   
SAME_UPPER)auto_pad)r   r  r   r   r   r   r   r*   r*   r+   test_conv_auto_pad  s    

 z%TestShapeInference.test_conv_auto_padc                 C  sX   |  dtjdfdtjdfgtdddgddddd	gd
gg }| |tdtjdg d S )Nr@   r  r   r  r  r   r  rB   r   r  r   )r   r  r   r   r   r   r   r*   r*   r+   test_conv_auto_pads  s$    

     z&TestShapeInference.test_conv_auto_padsc                 C  sX   |  dtjdfdtjdfgtdddgdddd	d
gdgg }| |tdtjdg d S )Nr@   )r   r   A   @   ?   r   r  r  r   r  rB   r   r   )r  r   )r   r  r  r  r  r   r   r*   r*   r+   test_conv_auto_pad_dilation)  s$    

    z.TestShapeInference.test_conv_auto_pad_dilationc              	   C  sP   |  dtjdfdtjdfgtdddgdddgg }| |tdtjd	g d S )
Nr@   r  r   r   r   r  r  r  r  r   r   groupr   r   r   r   r   r   r   r*   r*   r+   test_conv_group;  s    

 z"TestShapeInference.test_conv_groupc              	   C  sR   |  dtjdfdtjdfgtdddgddgdgg }| |tdtjd	g d S )
Nr@   r   r   )r  r   r3   r  r   rB   r   )r   r  r   r   r   r*   r*   r+   test_conv_only_one_posH  s    

 z)TestShapeInference.test_conv_only_one_posc                 C  s\   |  dtjdfdtjdfgtdddgddddd	ddgd
gg }| |tdtjdg d S )Nr@   r   r   Nr   r   r   r  r  r   r   rB   r   r   r   r  Nr   r   r   r   r*   r*   r+   test_conv_partial_missing_shapeU  s    

 z2TestShapeInference.test_conv_partial_missing_shapec                 C  s\   |  dtjdfdtjdfgtdddgddddd	ddgd
gg }| |tdtjd g d S )Nr@   r  r   r  r   Nr   r   r  r   r   rB   r   r   r   r   r*   r*   r+   &test_conv_partial_missing_weight_shape`  s    

  z9TestShapeInference.test_conv_partial_missing_weight_shapec                 C  sT   |  dtjdfgtddgdddddgddd	gd
gg }| |tdtjdg d S )Nr@   r  AveragePoolr   r  r   r   rB   r   r  r   r   )r   r   r   r   r   r   r   r*   r*   r+   test_average_pool_auto_padsm  s"    
 z.TestShapeInference.test_average_pool_auto_padsc              
   C  sP   |  dtjdfgtddgdgddgddgdgg }| |tdtjdg d S )Nr   r3   r   r   r   r  r   rB   r   r   r3   r   rB   rB   r   r   r*   r*   r+    test_average_pool_with_dilations  s         	 z3TestShapeInference.test_average_pool_with_dilationsc                 C  sX   |  dtjdfgtddgdgdddgddgddgdgg }| |tdtjd	g d S )
Nr   r  r  r   r  rB   r   r  r   r   r   r  r   r   r*   r*   r+   Atest_average_pool_with_same_upper_padding_and_stride_and_dilation  s$     zTTestShapeInference.test_average_pool_with_same_upper_padding_and_stride_and_dilationc                 C  s   |  d d S )NZRelur   rL   r*   r*   r+   	test_relu  s    zTestShapeInference.test_reluc                 C  s   |  d d S )NIdentityr   r  r*   r*   r+   test_identity  s    z TestShapeInference.test_identityc                 C  st   |  dtjdfdtjdfdtjdfgtddddgdgtddgd	ggg }| |tdtjd
td	tjd
g d S )Ninput1r   input2input3rB   r3   r   SequenceConstructin_sequencer  output_sequencerB   Nr   rN   r   r   r   rj   r   r   r*   r*   r+   test_identity_sequence  s0    


    z)TestShapeInference.test_identity_sequencec                 C  sp   |  dtjdfgtddgdgtddgdggg }ttjd}t|}| |td|td|g d S )NZ	in_tensorr   Optionalin_optionalr  output_optional)	rN   r   r   r   r   make_tensor_type_protomake_optional_type_protorj   make_value_info)rL   rb   tensor_type_protooptional_type_protor*   r*   r+   test_identity_optional  s    


z)TestShapeInference.test_identity_optionalc              	   C  s   |  dtjdfdtjdfdtjdfgtddddgdgtddgd	gtd
d	gdggg }ttjd}t|}t|}| |t	d|t	d	|t	d|g d S )Nr  r   r  r  r  r	  r
  r  r  r  r  r  )
rN   r   r   r   r   r  make_sequence_type_protor  rj   r  )rL   rb   r  sequence_type_protor  r*   r*   r+   test_identity_optional_sequence  s8    


   




z2TestShapeInference.test_identity_optional_sequencec                 C  sL   |  dtjdfdtjdfgtdddgdgg }| |tdtjdg d S )Nr@   r   r   Addr   r   r   r*   r*   r+   test_add  s    

 zTestShapeInference.test_addc                 C  sL   |  dtjdfdtjdfgtdddgdgg }| |tdtjdg d S )Nr@   r   r   ZPowr   r   r   r*   r*   r+   test_pow  s    

 zTestShapeInference.test_powc              	   C  sP   |  dtjdfdtjdfgtdddgdddgg }| |tdtjdg d S )Nr@   rB   r   r   r   BitShiftr   RIGHT	directionrN   r   ZUINT32r   rj   r   r   r*   r*   r+   test_bitshift	  s    

 z TestShapeInference.test_bitshiftc              	   C  sP   |  dtjdfdtjdfgtdddgdddgg }| |tdtjdg d S )	Nr@   )   r   r   r   rx  r  r   r   r!  r#  r   r*   r*   r+    test_bitshift_broadcast_to_first	  s     z3TestShapeInference.test_bitshift_broadcast_to_firstc              	   C  sP   |  dtjdfdtjdfgtdddgdddgg }| |tdtjdg d S )	Nr@   rx  r   r  r  r   r   r!  r#  r   r*   r*   r+   !test_bitshift_broadcast_to_second#	  s     z4TestShapeInference.test_bitshift_broadcast_to_secondc                 C  s   |  d d S )NSumr   r  r*   r*   r+   test_sum_single-	  s    z"TestShapeInference.test_sum_singlec                 C  sZ   |  dtjdfdtjdfdtjdfgtddddgdggg }| |tdtjdg d S )Nr@   r   r   r   r(  r   r   r   r*   r*   r+   test_sum_multi0	  s    


	 z!TestShapeInference.test_sum_multic                 C  sZ   |  dtjdfdtjdfdtjdfgtddddgdggg }| |tdtjd	g d S )
Nr@   )r   r   r3   r   r   r   r   r   )r   r   r(  r   r   r   r   r*   r*   r+   test_sum_multi_broadcasting>	  s    


	 z.TestShapeInference.test_sum_multi_broadcastingc                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )Nr@   )r   r   r3   r   r+  r(  r   r   r   r   r*   r*   r+   test_sum_broadcasting_paramL	  s    

 z.TestShapeInference.test_sum_broadcasting_paramc              
   C  s>   |  g tdg dgtjddgg }| |tdtjdg d S )NZRandomNormalr   r   )r4  ro   )rN   r   r   r  rj   r   r   r*   r*   r+   test_random_normalY	  s     	 z%TestShapeInference.test_random_normalc                 C  sB   |  dtjdfgtddgdggg }| |tdtjdg d S )Nr   r   RandomNormalLiker   r   r   r*   r*   r+   test_random_normal_likek	  s     z*TestShapeInference.test_random_normal_likec              	   C  sH   |  dtjdfgtddgdgtjdgg }| |tdtjdg d S )Nr   r   r/  r   r3  rN   r   r   r   r  rj   r   r   r*   r*   r+   "test_random_normal_like_with_dtypeu	  s     z5TestShapeInference.test_random_normal_like_with_dtypec                 C  sB   |  dtjdfgtddgdggg }| |tdtjdg d S )Nr@   rB  	Bernoullir   r   r   r*   r*   r+   test_bernoulli	  s    z!TestShapeInference.test_bernoullic              	   C  sH   |  dtjdfgtddgdgtjdgg }| |tdtjdg d S )Nr@   r   r3  r   r3  r1  r   r*   r*   r+   test_bernoulli_with_dtype	  s    z,TestShapeInference.test_bernoulli_with_dtypezTensorProto.DataType)r   
input_typer    c                 C  sH   |  d|dfd|dfgt|ddgdgg }| |tdtjdg d S )Nr@   r   r   r   rN   r   rj   r   r   r  rL   r   r6  rb   r*   r*   r+   _logical_binary_op	  s     z%TestShapeInference._logical_binary_opc                 C  sH   |  d|dfd|dfgt|ddgdgg }| |tdtjdg d S )Nr@   r   r   r   r   r7  r8  r*   r*   r+   $_logical_binary_op_with_broadcasting	  s     z7TestShapeInference._logical_binary_op_with_broadcastingc                 C  s    |  dtj | dtj d S )NAndr9  r   r  r:  r  r*   r*   r+   test_logical_and	  s    z#TestShapeInference.test_logical_andc                 C  s    |  dtj | dtj d S )NOrr<  r  r*   r*   r+   test_logical_or	  s    z"TestShapeInference.test_logical_orc                 C  s    |  dtj | dtj d S )NZXorr<  r  r*   r*   r+   test_logical_xor	  s    z#TestShapeInference.test_logical_xorc                 C  s    |  dtj | dtj d S )NZGreaterr<  r  r*   r*   r+   test_greater	  s    zTestShapeInference.test_greaterc                 C  s    |  dtj | dtj d S )NZLessr<  r  r*   r*   r+   	test_less	  s    zTestShapeInference.test_lessc                 C  s    |  dtj | dtj d S NZEqualr<  r  r*   r*   r+   
test_equal	  s    zTestShapeInference.test_equalc                 C  s    |  dtj | dtj d S rC  )r9  r   r   r:  r  r*   r*   r+   test_equal_string	  s    z$TestShapeInference.test_equal_stringc                 C  s@   |  dtjdfgtddgdgg }| |tdtjdg d S )Nr@   r   ZNotr   )rN   r   r  r   rj   r   r   r*   r*   r+   test_logical_not	  s       z#TestShapeInference.test_logical_notc                 C  s    |  dtj | dtj d S )NZLessOrEqualr<  r  r*   r*   r+   test_less_or_equal	  s    z%TestShapeInference.test_less_or_equalc                 C  s    |  dtj | dtj d S )NZGreaterOrEqualr<  r  r*   r*   r+   test_greater_or_equal	  s    z(TestShapeInference.test_greater_or_equalc              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   rB   r   r   r3   Flattenr   rB   r   )r      r   r   r*   r*   r+   test_flatten	  s     zTestShapeInference.test_flattenc                 C  sB   |  dtjdfgtddgdggg }| |tdtjdg d S )Nr@   rI  rJ  r   )rB   <   r   r   r*   r*   r+   test_flatten_default_axis	  s     z,TestShapeInference.test_flatten_default_axisc              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   rI  rJ  r   r   r   )r   x   r   r   r*   r*   r+   test_flatten_zero_axis	  s     z)TestShapeInference.test_flatten_zero_axisc              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   )rB   r   r   r3   rJ  r   rB   r   )NrK  r   r   r*   r*   r+   test_flatten_unknown_dim	  s    z+TestShapeInference.test_flatten_unknown_dimc              	   C  sJ   d}|  dtjdfgtddgdg|dgg }| |tdtjdg d S )Nr   r@   rB   r   d   rS  SpaceToDepthr   	blocksizerB   ,  r   r   r   rL   r   rb   r*   r*   r+   test_space_to_depth
  s     z&TestShapeInference.test_space_to_depthc              	   C  sJ   d}|  dtjdfgtddgdg|dgg }| |tdtjdg d S )Nr   r@   )rB   r   rS  rS  rT  r   rU  )rB   Nr   r   r   rY  r*   r*   r+   test_space_to_depth_unknown_dim
  s    z2TestShapeInference.test_space_to_depth_unknown_dimc              
   C  sL   d}|  dtjdfgtddgdg|ddgg }| |tdtjdg d S )	Nr   r@   rW  ZDepthToSpacer   ZDCR)rV  moderR  r   rY  r*   r*   r+   test_depth_to_space
  s     z&TestShapeInference.test_depth_to_spaceint)seqlen	batchsizeinpsize
hiddensizer    c              
   C  s   |  dtj|||ffdtjd||ffdtjd||ffgtddddgddg|dgg }| |tdtj|d||ftdtjd||fg d S )	Nr@   wr   rRNNalllasthidden_sizer   rL   r_  r`  ra  rb  rb   r*   r*   r+   _rnn_forward$
  s8         
  zTestShapeInference._rnn_forwardc                 C  s   |  dddd d S Nr      r   r   )rk  r  r*   r*   r+   test_rnn_forward@
  s    z#TestShapeInference.test_rnn_forwardc              
   C  s   |  dtj|||ffdtjd||ffdtjd||ffgtddddgddg|dd	gg }| |tdtj|d||ftdtjd||fg d S )
Nr@   rc  rB   rd  re  rf  rg  bidirectional)ri  r"  r   rj  r*   r*   r+   _rnn_bidirectionalC
  s:    	  
  z%TestShapeInference._rnn_bidirectionalc                 C  s&   |  dddd |  ddddd d S )Nr  rm  r   r   ro  )_rnn_layoutr  r*   r*   r+   test_rnn_layoutc
  s    z"TestShapeInference.test_rnn_layoutforward)r_  r`  ra  rb  r"  r    c                 C  s   |  dtj|||ffdtjd||ffdtjd||ffgtddddgddg|d|dgg }|d	krhd
}nd}| |tdtj||||ftdtj|||fg d S )Nr@   rc  r   rd  re  rf  rg  )ri  Zlayoutr"  ro  rB   r   )rL   r_  r`  ra  rb  r"  rb   Znum_directionsr*   r*   r+   rq  g
  sB    

  zTestShapeInference._rnn_layoutc                 C  s   |  dddd d S rl  )rp  r  r*   r*   r+   test_rnn_bidirectional
  s    z)TestShapeInference.test_rnn_bidirectionalc                 C  s   |  dtj|||ffdtjdd| |ffdtjdd| |ffgtddddgddd	g|d
gg }| |tdtj|d||ftdtjd||ftd	tjd||fg d S )Nr@   rc  r   r   rd  ZLSTMrf  hiddenrg  rh  r   rj  r*   r*   r+   _lstm_forward
  sB      
    z TestShapeInference._lstm_forwardc                 C  s   |  dddd d S rl  )rv  r  r*   r*   r+   test_lstm_forward
  s    z$TestShapeInference.test_lstm_forwardc              	   C  sd   | j dtjdfgtdddgddggg tdtjddgd	}| |tdtjd
tdtjd
g d S )Nr@   r   r   r3   r   TopKkr   r   rx  r   r   )r   r   r3   rB   rN   r   r   r   r   rJ   rj   r   r   r*   r*   r+   test_topk_default_axis
  s    z)TestShapeInference.test_topk_default_axisc              	   C  sh   | j dtjdfgtdddgddgddgg tdtjd	d
gd}| |tdtjdtdtjdg d S )Nr@   rx  ry  rz  r   r   rB   r   rx  r   r   )r   r   rB   r   r{  r   r*   r*   r+   	test_topk
  s    zTestShapeInference.test_topkc                 C  s|   | j dtjdfgtdddgddgddgg tdtjd	tjd
gdd ddgd}| 	|t
dtjdt
dtjdg d S )Nr@   rx  ry  rz  r   r   rB   r   rx  r   rA  r3  Tr5  r   )r   r   r   r   )rN   r   r   r   r   rJ   r   r8  r9  rj   r   r   r*   r*   r+   test_topk_raw_data
  s&    z%TestShapeInference.test_topk_raw_datac              	   C  s`   |  dtjdfdtjdfgtdddgddgdd	gg }| |tdtjd
tdtjd
g d S )Nr@   rx  rz  rx  ry  r   r   rB   r   )NNNNr  r   r*   r*   r+   +test_topk_missing_k_value_output_rank_check
  s      z>TestShapeInference.test_topk_missing_k_value_output_rank_checkc                 C  sZ   |  dtjdfdtjdfdtjd fgtddddgdggg }| |tdtjdg d S )	Nr@   r   r3   r   r3   rJ  r   Gemmr   r   rJ  r   r   r*   r*   r+   	test_gemm   s    


	 zTestShapeInference.test_gemmc              	   C  s^   |  dtjdfdtjdfdtjd fgtddddgdgdd	gg }| |tdtjd
g d S )Nr@   r3   r   r   r  r   r  r   r   )transAr  r   r   r*   r*   r+   test_gemm_transA  s    


	 z#TestShapeInference.test_gemm_transAc              	   C  s^   |  dtjdfdtjdfdtjd fgtddddgdgdd	gg }| |tdtjd
g d S )Nr@   r  r   rJ  r3   r   r  r   r   )transBr  r   r   r*   r*   r+   test_gemm_transB  s    


	 z#TestShapeInference.test_gemm_transBc              
   C  s`   |  dtjdfdtjdfdtjd fgtddddgdgddd	gg }| |tdtjd
g d S )Nr@   r  r   r  r   r  r   r   )r  r  r  r   r   r*   r*   r+   test_gemm_transA_and_transB*  s    


	 z.TestShapeInference.test_gemm_transA_and_transBc                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )Nr@   )   r   r   )r      r  r   )r  r  r   r   r*   r*   r+   test_gemm_no_bias8  s     z$TestShapeInference.test_gemm_no_biasc              	   C  sn   | j dtjdfgtddddddgg tdtjd	dgd
}t }d|_d|_| j	|t
dtjdg|gd d S )Nr@      r   rJ  ReduceL1r   r   r   rS  keepdimsrS  r   r   rN  r  r  r   rN   r   r   r   r   rJ   r
   r'   r)   rj   r   r  r*   r*   r+   #test_reduce_op_shape_2_axis_opset13B  s    z6TestShapeInference.test_reduce_op_shape_2_axis_opset13c              	   C  sz   | j dtjdfdtjdfgtdddgdddgg tdtjdd	gd
}t }d|_d|_| j	|t
dtjdg|gd d S )Nr@   r  rS  r   r  r   r   r  r   r   rN  rP  r  r   rN   r   r   rJ   r   r   r
   r'   r)   rj   r   r  r*   r*   r+   #test_reduce_op_shape_2_axis_opset18S  s    z6TestShapeInference.test_reduce_op_shape_2_axis_opset18c              	   C  sZ   | j dtjdfgtddddddgg g d}td	d
d}| j|tdtjdg|gd d S )Nr@   r  r   rJ  r  r   rx  r   r  r   rN  r  r'   r)   r  r   rJ  r   )rN   r   r   r   r
   rj   r   r  r*   r*   r+    test_reduce_op_empty_set_opset13d  s    z3TestShapeInference.test_reduce_op_empty_set_opset13c              	   C  st   | j dtjdfdtjdfgtdddgdddgg tdtjddgd	}td
dd}| j|tdtjdg|gd d S )Nr@   r  rS  rx  r  r   r   r  r   rN  rP  r  r  r   )	rN   r   r   rJ   r   r   r
   rj   r   r  r*   r*   r+    test_reduce_op_empty_set_opset18r  s    z3TestShapeInference.test_reduce_op_empty_set_opset18c              	   C  sn   | j dtjdfgtddddddgg tdtjd	dgd
}t }d|_d|_| j	|t
dtjdg|gd d S )Nr@   r  r  r   r   r   r  rS  r   r   rN  r  r  r   r   r   r  r  r*   r*   r+   &test_reduce_op_shape_keep_dims_opset13  s    z9TestShapeInference.test_reduce_op_shape_keep_dims_opset13c              	   C  sz   | j dtjdfdtjdfgtdddgdddgg tdtjdd	gd
}t }d|_d|_| j	|t
dtjdg|gd d S )Nr@   r  rS  r   r  r   r   r  r   r   rN  rP  r  r   r  r  r*   r*   r+   &test_reduce_op_shape_keep_dims_opset18  s    z9TestShapeInference.test_reduce_op_shape_keep_dims_opset18c                 C  s>   |  dtjdfgtdddgg }| |tdtjdg d S )Nr@   r  r  r   r  r   r   r*   r*   r+   "test_reduce_op_shape_default_value  s     z5TestShapeInference.test_reduce_op_shape_default_valuec              	   C  sB   |  dtjdfgtdddddgg }| |tdtjdg d S )Nr@   r  r  r   r   r  r*   r   r   r*   r*   r+   -test_reduce_op_shape_no_axes_do_not_keep_dims  s     z@TestShapeInference.test_reduce_op_shape_no_axes_do_not_keep_dimsc              	   C  s^   | j dtjdfdtjdfgtdddgdgg tdtjddgd}| |tdtjd	g d S )
Nr@   r  rS  r   r  r   )r!   r  r   r  r  r   r*   r*   r+   "test_reduce_op_shape_negative_axis  s     z5TestShapeInference.test_reduce_op_shape_negative_axisc              
   C  sD   |  dtjdfgtddddddgg }| |tdtjdg d S )Nr@   r  ArgMaxr   r   r   r  r  rN   r   r   r   rj   r   rJ   r   r*   r*   r+   test_argmax_shape  s     z$TestShapeInference.test_argmax_shapec              
   C  sD   |  dtjdfgtddddddgg }| |tdtjdg d S )Nr@   r  r  r   r   r  )r   rJ  r  r   r*   r*   r+   test_argmax_shape_keepdims  s     z-TestShapeInference.test_argmax_shape_keepdimsc                 C  s>   |  dtjdfgtdddgg }| |tdtjdg d S )Nr@   r  r  r   )r   r   rJ  r  r   r*   r*   r+   test_argmax_shape_default_value  s       z2TestShapeInference.test_argmax_shape_default_valuec              	   C  sB   |  dtjdfgtdddddgg }| |tdtjdg d S )Nr@   r  r  r   r  r   r  r  r   r*   r*   r+   test_argmax_shape_negative_axis  s     z2TestShapeInference.test_argmax_shape_negative_axisc                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )Ndatar   Zratior*   ZDropoutr   r   r   r*   r*   r+   test_dropout  s&    	
zTestShapeInference.test_dropoutc                 C  s   | j ddddd d S )NZLRN      ?r   )alphabetasizer   r  r*   r*   r+   test_LRN  s    zTestShapeInference.test_LRNc              
   C  sr   |  dtjdfdtjdfdtjdfdtjdfdtjdfgtddddddgd	ggg }| |td	tjdg d S )
Nr@   r  scaler"  r   meanvarBatchNormalizationr   r   r   r*   r*   r+   test_batch_norm  s&    




   z"TestShapeInference.test_batch_normc              
   C  sr   |  dtjdfdtjdfdtjdfdtjdfdtjdfgtddddddgd	ggg }| |td	tjdg d S )
Nr@      r  rx  r   r  r  r  r   r   r   r*   r*   r+   test_batch_norm_rank1  s&    




   z(TestShapeInference.test_batch_norm_rank1c              
   C  sn   |  dtjdfdtjdfdtjdfdtjdfdtjdfgtd	dddddgd
ggg }| tjj| j| d S )Nr@   r  r  r   r   rx  r  r  r  r   r   r   r*   r*   r+   test_batch_norm_invalid0  s     




  z*TestShapeInference.test_batch_norm_invalidc              
   C  sV   |  dtjdfgtddgddgdddgg }| |tdtjd	tdtjd	g d S )
Nr@   r   Splitr   r   r!   rB   r   Znum_outputsr   r   r   r*   r*   r+   test_split_negative_axisB  s    z+TestShapeInference.test_split_negative_axisc              	   C  sr   | j dtjdfdtjdfgtdddgddgdd	gg tdtjdd
gd}| |tdtjdtdtjdg d S )Nr@   r   splitr   r  r   r   r   r   r<  r   r   r   r  r   r*   r*   r+   test_split_with_split_attributeP  s    z2TestShapeInference.test_split_with_split_attributec              	   C  sr   | j dtjdfdtjdfgtdddgddgdd	gg tdtjdd
gd}| |tdtjdtdtjdg d S )Nr@   )rB   r   r   r  r   r  r   r   r   r   r<  r   )rB   Nr   r  r   r*   r*   r+   1test_split_with_split_attribute_unknown_split_dim_  s    

	zDTestShapeInference.test_split_with_split_attribute_unknown_split_dimc              
   C  sV   |  dtjdfgtddgddgdddgg }| |tdtjd	tdtjd	g d S )
Nr@   r  r  r   r   r   rB   r  r3   r   r   r   r   r*   r*   r+   test_split_from_GLUq  s    z&TestShapeInference.test_split_from_GLUc              
   C  sd   |  dtjdfgtddgdddgddd	gg }| |tdtjd
tdtjd
tdtjdg d S )Nr@   )r  rB   r  r   r   r   r   r   r  rW  r   r   r   r*   r*   r+   test_split_uneven_split_2d  s    z-TestShapeInference.test_split_uneven_split_2dc              
   C  sd   |  dtjdfgtddgdddgddd	gg }| |tdtjd
tdtjd
tdtjdg d S )Nr@   )rB   r   r   r  r   r   r   r   r   r  rB   r   r   rB   r   r   r   r   r*   r*   r+   test_split_uneven_split_3d  s    z-TestShapeInference.test_split_uneven_split_3dc              
   C  sp   |  dtjdfgtddgddgdddtd	dgd
ggg }| |tdtjdtdtjdtd
tjdg d S )Nr@   r  r  r   r   r   rB   r  Sigmoidr   r  r   r   r*   r*   r+   test_GLU_partial  s    z#TestShapeInference.test_GLU_partialc              
   C  s   |  dtjdfgtddgddgdddtd	dgd
gtddd
gdggg }| |tdtjdtdtjdtd
tjdtdtjdg d S )Nr@   r  r  r   r   r   rB   r  r  r   ZMulr   r  r   r   r*   r*   r+   test_GLU  s     	zTestShapeInference.test_GLUc                 C  s@   |  dtjdfgtddgdgg }| |tdtjdg d S )Nr@   r   r3   Softmaxr   r   r   r*   r*   r+   test_softmax_2d  s       z"TestShapeInference.test_softmax_2dc                 C  s@   |  dtjdfgtddgdgg }| |tdtjdg d S )Nr@   r  r  r   r   r   r*   r*   r+   test_softmax_3d  s     z"TestShapeInference.test_softmax_3dc                 C  s@   |  dtjdfgtddgdgg }| |tdtjdg d S )Nr@   r  Hardmaxr   r   r   r*   r*   r+   test_hardmax_2d  s       z"TestShapeInference.test_hardmax_2dc                 C  s@   |  dtjdfgtddgdgg }| |tdtjdg d S )Nr@   r  r  r   r   r   r*   r*   r+   test_hardmax_3d  s     z"TestShapeInference.test_hardmax_3dc                 C  s@   |  dtjdfgtddgdgg }| |tdtjdg d S )Nr@   r  
LogSoftmaxr   r   r   r*   r*   r+   test_logsoftmax_2d  s     z%TestShapeInference.test_logsoftmax_2dc                 C  s@   |  dtjdfgtddgdgg }| |tdtjdg d S )Nr@   r  r  r   r   r   r*   r*   r+   test_logsoftmax_3d  s     z%TestShapeInference.test_logsoftmax_3dc              	   C  sD   |  dtjdfgtddgdddgg }| |tdtjdg d S )Nr@   r  r  r   r!   r   r   r   r*   r*   r+    test_logsoftmax_3d_negative_axis  s     z3TestShapeInference.test_logsoftmax_3d_negative_axisc              	   C  sJ   |  dtjdfgtddgdgddgdgg }| |tdtjdg d S )Nr   r  MaxPoolr   rB   r   r3   r   r   r   r   r   r*   r*   r+   test_maxpool  s     zTestShapeInference.test_maxpoolc              	   C  sX   |  dtjdfgtddgddgddgdgg }| |tdtjdtdtjdg d S )	Nr   r  r  r   ZrB   r  r  r  r   r*   r*   r+   test_maxpool_with_indices  s    z,TestShapeInference.test_maxpool_with_indicesc              
   C  sL   |  dtjdfgtddgdgdddgdgg }| |tdtjdg d S )Nr   r3   r   r   r   r   r  r   rB   r  r3   r   r   r   r   r   r   r*   r*   r+   test_maxpool_3D  s     z"TestShapeInference.test_maxpool_3Dc                 C  sT   |  dtjdfgtddgdgddgddddgdgg }| |tdtjdg d S )	Nr   r  r  r   rB   r   r   r   r3   r   r   r   r   r   r*   r*   r+   test_maxpool_with_padding'  s         
	 z,TestShapeInference.test_maxpool_with_paddingc                 C  sZ   |  dtjdfgtddgdgddgddddgddgdgg }| |tdtjdg d S )	Nr   r  r  r   rB   r   r   r   r   r  r   r   r*   r*   r+   $test_maxpool_with_padding_and_stride5  s"    

 z7TestShapeInference.test_maxpool_with_padding_and_stridec                 C  sR   |  dtjdfgtddgdgddgddgddgg }| |tdtjdg d S )	Nr   rm     #   r  r  r   rB   Fr   r   Z	ceil_mode)rm  r  r  r  r   r   r*   r*   r+   test_maxpool_with_floor_modeH  s"    
 z/TestShapeInference.test_maxpool_with_floor_modec                 C  sR   |  dtjdfgtddgdgddgddgddgg }| |tdtjdg d S )	Nr   r  r  r   rB   Tr  )rm  r  rP  rP  r   r   r*   r*   r+   test_maxpool_with_ceil_mode[  s"    
 z.TestShapeInference.test_maxpool_with_ceil_modec                 C  sR   |  dtjdfgtddgdgddgddgddgg }| |tdtjd	g d S )
Nr   r   r   r   r   r  r   r   rB   Tr  r   r   rB   rB   r   r   r*   r*   r+   test_maxpool_ceiln  s"    
 z$TestShapeInference.test_maxpool_ceilc              
   C  sP   |  dtjdfgtddgdgddgddgdgg }| |tdtjdg d S )Nr   r  r  r   rB   r  r  r   r   r*   r*   r+   test_maxpool_with_dilations  s     z.TestShapeInference.test_maxpool_with_dilationsc                 C  sR   |  dtjdfgtddgdgdddgddgdgg }| |tdtjdg d S )	Nr   r  r  r   r  rB   r  r  r   r   r*   r*   r+   /test_maxpool_with_same_upper_padding_and_stride  s"    
 zBTestShapeInference.test_maxpool_with_same_upper_padding_and_stridec                 C  sX   |  dtjdfgtddgdgdddgddgddgdgg }| |tdtjd	g d S )
Nr   r  r  r   r  rB   r   r  r  r   r   r*   r*   r+   <test_maxpool_with_same_upper_padding_and_stride_and_dilation  s$     zOTestShapeInference.test_maxpool_with_same_upper_padding_and_stride_and_dilationc                 C  sR   |  dtjdfgtddgdgdddgddgdgg }| |tdtjdg d S )	Nr   r  r  r   r  rB   r   r  r   r   r*   r*   r+   3test_maxpool_with_same_upper_padding_and_stride_one  s"    
 zFTestShapeInference.test_maxpool_with_same_upper_padding_and_stride_onec                 C  sR   |  dtjdfgtddgdgdddgddgdgg }| |tdtjdg d S )	Nr   r3   r   r   r   r  r   
SAME_LOWERrB   r  r3   r   r3   r3   r   r   r*   r*   r+   /test_maxpool_with_same_lower_padding_and_stride  s"    
 zBTestShapeInference.test_maxpool_with_same_lower_padding_and_stridec                 C  sX   |  dtjdfgtddgdgdddgddgddgdgg }| |tdtjd	g d S )
Nr   r  r  r   r  rB   r   r  r  r   r   r*   r*   r+   <test_maxpool_with_same_lower_padding_and_stride_and_dilation  s$     zOTestShapeInference.test_maxpool_with_same_lower_padding_and_stride_and_dilationc                 C  sR   |  dtjdfgtddgdgdddgddgdgg }| |tdtjd	g d S )
Nr   r  r  r   r  rB   r   r  r3   r   r   r   r   r   r*   r*   r+   3test_maxpool_with_same_lower_padding_and_big_stride  s"    
 zFTestShapeInference.test_maxpool_with_same_lower_padding_and_big_stridec              	   C  sJ   |  dtjdfgtddgdgddgdgg }| |tdtjdg d S )Nr   r  r  r   rB   r  r  r   r   r*   r*   r+   test_averagepool  s     z#TestShapeInference.test_averagepoolc              
   C  sL   |  dtjdfgtddgdgdddgdgg }| |tdtjdg d S )Nr   r  r  r   rB   r  r  r   r   r*   r*   r+   test_averagepool_3D	  s     z&TestShapeInference.test_averagepool_3Dc                 C  sT   |  dtjdfgtddgdgddgddddgdgg }| |tdtjdg d S )	Nr   r  r  r   rB   r   r  r  r   r   r*   r*   r+   test_averagepool_with_padding  s         
	 z0TestShapeInference.test_averagepool_with_paddingc                 C  sZ   |  dtjdfgtddgdgddgddddgddgdgg }| |tdtjdg d S )	Nr   r  r  r   rB   r   r  r  r   r   r*   r*   r+   (test_averagepool_with_padding_and_stride!  s"    

 z;TestShapeInference.test_averagepool_with_padding_and_stridec                 C  sR   |  dtjdfgtddgdgddgddgddgg }| |tdtjd	g d S )
Nr   r  r  r   r   rB   Tr  r  r   r   r*   r*   r+   test_averagepool_ceil4  s"    
 z(TestShapeInference.test_averagepool_ceilc              	   C  sJ   |  dtjdfgtddgdgddgdgg }| |tdtjdg d S )Nr   r  LpPoolr   rB   r  r  r   r   r*   r*   r+   test_lppoolG  s     zTestShapeInference.test_lppoolc              
   C  sL   |  dtjdfgtddgdgdddgdgg }| |tdtjdg d S )Nr   r  r  r   rB   r  r  r   r   r*   r*   r+   test_lppool_3DQ  s     z!TestShapeInference.test_lppool_3Dc                 C  sT   |  dtjdfgtddgdgddgddddgdgg }| |tdtjdg d S )	Nr   r  r  r   rB   r   r  r  r   r   r*   r*   r+   test_lppool_with_padding[  s    " z+TestShapeInference.test_lppool_with_paddingc                 C  sZ   |  dtjdfgtddgdgddgddddgddgdgg }| |tdtjdg d S )	Nr   r  r  r   rB   r   r  r  r   r   r*   r*   r+   #test_lppool_with_padding_and_stridee  s"    

 z6TestShapeInference.test_lppool_with_padding_and_stridec              
   C  sP   |  dtjdfgtddgdgddgddgdgg }| |tdtjdg d S )Nr   r  r  r   rB   r  r  r   r   r*   r*   r+   test_lppool_with_dilationsx  s     z-TestShapeInference.test_lppool_with_dilationsc                 C  sX   |  dtjdfgtddgdgdddgddgddgdgg }| |tdtjd	g d S )
Nr   r  r  r   r  rB   r   r  r  r   r   r*   r*   r+   ;test_lppool_with_same_upper_padding_and_stride_and_dilation  s$     zNTestShapeInference.test_lppool_with_same_upper_padding_and_stride_and_dilationc              	   C  sV   |  dtjdfdtjdfgtdddgdgddgdgg }| |tdtjd	g d S )
Nr   r  rois)rB   r3   Z
MaxRoiPoolr   rB   )Zpooled_shape)rB   r   rB   rB   r  r   r*   r*   r+   test_roipool  s    

 zTestShapeInference.test_roipoolc                 C  sB   |  dtjdfgtddgdggg }| |tdtjdg d S )Nr@   r  ZLpNormalizationr   r   r   r*   r*   r+   test_lp_norm  s     zTestShapeInference.test_lp_normc                 C  sZ   |  dtjdfdtjdfdtjdfgtddddgdggg }| |tdtjdg d S )Nr@   r  r  r"  r   ZInstanceNormalizationr   r   r   r*   r*   r+   test_instance_norm  s    


	 z%TestShapeInference.test_instance_normc                 C  sB   |  dtjdfgtddgdggg }| |tdtjdg d S )Nr   r  ZGlobalMaxPoolr   r  r   r   r*   r*   r+   test_global_maxpool  s     z&TestShapeInference.test_global_maxpoolc                 C  sB   |  dtjdfgtddgdggg }| |tdtjdg d S )Nr   r  ZGlobalAveragePoolr   r  r   r   r*   r*   r+   test_global_averagepool  s     z*TestShapeInference.test_global_averagepoolc                 C  sB   |  dtjdfgtddgdggg }| |tdtjdg d S )Nr   r  ZGlobalLpPoolr   r  r   r   r*   r*   r+   test_global_lppool  s     z%TestShapeInference.test_global_lppoolc              	   C  sT   |  dtjdfdtjdfgtdddgdddgdgg }| |tdtjd	g d S )
Nr      0   r%  r%  Wr  rm  r   r   ConvTransposer   rB   r   )r  rm  !   r  r   r   r*   r*   r+   test_conv_transpose  s    

 z&TestShapeInference.test_conv_transposec                 C  s^   |  dtjdfdtjdfgtdddgdddgddddgd	gg }| |tdtjd
g d S )Nr   r  r  r  r  r   rB   r   )r   r   r  rm  r   r   r   r   r*   r*   r+   test_conv_transpose_with_pads  s$    

    
 z0TestShapeInference.test_conv_transpose_with_padsc                 C  sd   |  dtjdfdtjdfgtdddgdddgddddgd	d	gd
gg }| |tdtjdg d S )Nr   r  r  r  r  r   rB   r   $   )r   r   r   )r  rm  r  r  r   r   r*   r*   r+   %test_conv_transpose_with_output_shape  s&    



 z8TestShapeInference.test_conv_transpose_with_output_shapec                 C  sd   |  dtjdfdtjdfgtdddgdddgddgd	d	ddgd
gg }| |tdtjdg d S )Nr   r  r  )r  rm  NNr  r   r   rB   r   )r   r   r   r  r   r   r*   r*   r+   %test_conv_transpose_with_kernel_shape  s&    



 z8TestShapeInference.test_conv_transpose_with_kernel_shapec                 C  sd   |  dtjdfdtjdfgtdddgdddgddddgd	d	gd
gg }| |tdtjdg d S )Nr   r  r  r  r  r   rB   r   r   )r   r   r   )r  rm  "   r  r   r   r*   r*   r+   "test_conv_transpose_with_dilations#  s&    



 z5TestShapeInference.test_conv_transpose_with_dilationsc                 C  s`   |  dtjdfdtjdfgtdddgdddgddddgdd	gg }| |tdtjd
g d S )Nr   r  r  r  r  r   rB   r   )r   r   r  )r  r  r   r   r   r   r*   r*   r+   test_conv_transpose_with_group9  s&    



 z1TestShapeInference.test_conv_transpose_with_groupc                 C  sf   |  dtjdfdtjdfgtdddgdddgddddgdd	d	gd
gg }| |tdtjdg d S )Nr   r  r  r  r  r   rB   r   r  )r   r   r  r   )r  r  r  r  r   r   r*   r*   r+   /test_conv_transpose_with_group_and_output_shapeO  s(    


 zBTestShapeInference.test_conv_transpose_with_group_and_output_shapec                 C  st   |  dtjdfdtjdfdtjdfgtddddgdd	d
d
gdd
d
dgdgg }| jtjjtjjt	
|dd d S )Nr   r  r  r   r   r   r   Brx  r  r   r  r   r   )r  r   r   TrR   )rN   r   r   r   r   rU   rV   r   rW   r   rT   r   r*   r*   r+   +test_conv_transpose_with_pads_and_auto_padsf  s,    




z>TestShapeInference.test_conv_transpose_with_pads_and_auto_padsc              
   C  sV   |  dtjdfdtjdfgtdddgddddgd	gg }| |tdtjd
g d S )Nr   r  r  r  r  r   r  rB   r  )r  rm  rm  rm  r   r   r*   r*   r+   test_conv_transpose_auto_pads  s$    

	 z0TestShapeInference.test_conv_transpose_auto_padsc              
   C  sH   |  dtjdfgtddddddgdgg }| |tdtjdg d S )	Nr   r  ZMeanVarianceNormalizationr   r   rB   r   rR  r   r   r*   r*   r+   test_mvn_function_output_shape  s     z1TestShapeInference.test_mvn_function_output_shapec           	   
   C  s   d}d}d}d}t dtjd t dtjd g}t dtjd t dtjd g}ttd	dgdgtd	dgdggd
||}| dtj||ffdtj|||ffgtddddgddgd|dgg }| j|t dtj||ft dtj|||fgt	t
dgd d S )Nr   sequencerB   r   loop_state_inr   loop_state_outr   r  subgraphloop_state_orig
scan_inputScanrN  loop_state_finalscan_outputnum_scan_inputsbodyr  r   r   r   rH   r   rK   r   rN   r   rj   r   r   )	rL   Z
batch_sizeseq_len
input_sizeloop_state_sizerM   output_value_infosr%  rb   r*   r*   r+   	test_scan  s^    
	    zTestShapeInference.test_scanc              
   C  s   d}d}d}t dtjd t dtjd g}t dtjd t dtjd g}ttddgdgtddgdggd	||}| d
tj|ffdtj||ffgtdd
dgddgd|dgg }| j|t dtj|ft dtj||fgt	t
dgd d S )Nr"  rB   r   r#  r   r$  r   r  r%  r&  r'  r(  r)  r*  r   r+  r   r   r.  )rL   r/  r0  r1  rM   r2  r%  rb   r*   r*   r+   test_scan_opset9  s\    
	    z#TestShapeInference.test_scan_opset9c           	      C  s   d}d}d}d}t dtjd t dtjd g}t dtjd t dtjd g}ttd	dgdgtd	dgdggd
||}| dtj|ffdtj|||ffgtdddgddgd|dgdgg }| j|t dtj|ft dtj|||fgt	t
dgd d S )Naxis0r"  rB   r   r#  r   r$  r   r  r%  r&  r'  r(  r)  r*  r   )r,  r-  scan_input_axesr   r   r.  	rL   Z
axis_0_lenr/  r0  r1  rM   r2  r%  rb   r*   r*   r+   test_scan_opset9_axes  s`    

    z(TestShapeInference.test_scan_opset9_axesc           	      C  s   d}d}d}d}t dtjd t dtjd g}t dtjd t dtjd g}ttd	dgdgtd	dgdggd
||}| dtj|ffdtj|||ffgtdddgddgd|dgdgdgg }| j|t dtj|ft dtj|||fgt	t
dgd d S )Nr5  r"  rB   r   r#  r   r$  r   r  r%  r&  r'  r(  r)  r*  r   r,  r-  r6  Zscan_output_axesr   r   r.  r7  r*   r*   r+   test_scan_opset9_output_axesN  sb    
    z/TestShapeInference.test_scan_opset9_output_axesc           	      C  s   d}d}d}d}t dtjd t dtjd g}t dtjd t dtjd g}ttd	dgdgtd	dgdggd
||}| dtj|ffdtj|||ffgtdddgddgd|dgdgdgg }| j|t dtj|ft dtj|||fgt	t
dgd d S )Nr5  r"  rB   r   r#  r   r$  r   r  r%  r&  r'  r(  r)  r*  r   r  r9  r   r   r.  r7  r*   r*   r+   test_scan_opset9_negative_axes  sb    
    z1TestShapeInference.test_scan_opset9_negative_axesc              
   C  s   t tdddgdggdg tdtjd g}t tdddgdggd	g tdtjd g}| d
tjdfdtjdfdtjdfdtjdfgtdd
gdg||dgg }| j	|tdtjdgt
tdgd d S )Nr  current_value	add_valuethen_outputthen_subgraphSub	sub_valueelse_outputelse_subgraphcondrx  If	if_outputZthen_branchZelse_branchr   r   )r   rK   r   r   r   rH   rN   r  r   rj   r   r   rL   r?  rC  rb   r*   r*   r+   test_if_ver1  sB    



	
zTestShapeInference.test_if_ver1c              
   C  s   t tdddgdggdg tdtjd g}t tdddgdggd	g tdtjd g}| d
tjdfdtjdfdtjdfdtjdfgtdd
gdg||dgg }| 	|tdtjdg d S )Nr  r<  r=  r>  r?  r@  rA  rB  rC  rD  rx  rE  rF  rG  
r   rK   r   r   r   rH   rN   r  r   rj   rH  r*   r*   r+   test_if  s@    



	 zTestShapeInference.test_ifc              
   C  s   t tdddgdggdg tdtjdg}t tdddgd	ggd
g td	tjdg}| dtjdfdtjdfdtjdfdtjdfgtddgdg||dgg }| 	|tdtjdg d S )Nr  r<  r=  r>  r?  rx  r@  rA  rB  rC  r3   rD  rE  rF  rG  rC   rJ  rH  r*   r*   r+   3test_if_with_different_shapes_in_then_else_branches  s:    



	zFTestShapeInference.test_if_with_different_shapes_in_then_else_branchesc              
   C  sl   t d}t d}| dtjdfdtjdfdtjdfgtddgd	g||d
gg }| |td	tjd g d S )NzQthen_graph () => (then_output) { then_output = ReduceSum <keepdims=0> (X, axes) }zKelse_graph () => (else_output) { else_output = ReduceSum <keepdims=0> (X) }rD  rx  r   r   r  r%  rS  rE  rF  rG  	r   rN   r   r  r   rJ   r   rj   r   rL   Z
then_graphZ
else_graphrb   r*   r*   r+   test_if_no_shape_in_then_branch>  s,    


	z2TestShapeInference.test_if_no_shape_in_then_branchc              
   C  sl   t d}t d}| dtjdfdtjdfdtjdfgtddgd	g||d
gg }| |td	tjd g d S )NzKthen_graph () => (then_output) { then_output = ReduceSum <keepdims=0> (X) }zQelse_graph () => (else_output) { else_output = ReduceSum <keepdims=0> (X, axes) }rD  rx  r   rN  rS  rE  rF  rG  rO  rP  r*   r*   r+   test_if_no_shape_in_else_branchX  s,    


	z2TestShapeInference.test_if_no_shape_in_else_branchc              
   C  s  t jtjdgd}t |}t d|}t tddgdggdg |g}t jtjdgd}t |}t d|}t tdd	gdggd
g |g}| dtj	dfdtj
dfd	tj
dfgtddgdg||dgg }	t jtj
dd}
t |
}t d|}| |	|g d S )Nr   rn   ro   Zthen_optional_outputr  Zthen_tensor_valuer?  r3   Zelse_optional_outputZelse_tensor_valuerC  rD  rx  rL  rE  rF  rG  rC   )r   r  r   rH   r  r  rK   r   rN   r  r   rj   )rL   Zthen_tensor_protoZthen_optional_type_protoZthen_optional_vir?  Zelse_tensor_protoZelse_optional_type_protoZelse_optional_virC  rb   Zoutput_tensor_protoZoutput_optional_type_protoZoutput_optional_vir*   r*   r+   <test_if_with_different_optional_shapes_in_then_else_branchesr  sv    
 
 


	  zOTestShapeInference.test_if_with_different_optional_shapes_in_then_else_branchesc              
   C  sZ   |  dtjdfdtjdfgtdddgdddgddgdgg }| |tdtjdg d S )	NxTr  xI	MaxUnpoolr   rB   r   r   r  r   r   r*   r*   r+   )test_maxunpool_shape_without_output_shape  s$    

     z<TestShapeInference.test_maxunpool_shape_without_output_shapec              
   C  sr   |  dtjdfdtjdfdtjdfgtddddgdddgddgd	gtdtjd g}| |tdtjd g d S )
NrU  r  rV  r   r"  rW  r   rB   rX  )rN   r   r   r   r   rj   r   r*   r*   r+   &test_maxunpool_shape_with_output_shape  s&    


	 z9TestShapeInference.test_maxunpool_shape_with_output_shapec                 C  sX   |  dtjdfdtjdfdtjdfgtddddgdgg }| |tdtjd	g d S )
Nr  r   depthr*   valuesr   OneHotr   )rB   rB   NrN   r   rJ   r   r   rj   r   r   r*   r*   r+   test_onehot_without_axis  s    


	z+TestShapeInference.test_onehot_without_axisc              	   C  s\   |  dtjdfdtjdfdtjdfgtddddgdd	d
gg }| |tdtjdg d S )Nr  rB   r   r3   r[  rx  r\  r   r]  r   r   r   )rB   Nr   r3   r^  r   r*   r*   r+   test_onehot_with_axis  s    


	z(TestShapeInference.test_onehot_with_axisc              	   C  sj   | j dtjdfdtjdfdtjdfgtddddgdgg tdtjdd	gd
}| |tdtjdg d S )Nr  r   r[  r*   r\  r   r]  r      r   )rB   rB   rc  rN   r   rJ   r   r   r   rj   r   r   r*   r*   r+   test_onehot_without_axis_2  s    



z-TestShapeInference.test_onehot_without_axis_2c              	   C  sn   | j dtjdfdtjdfdtjdfgtddddgdd	d
gg tdtjddgd}| |tdtjdg d S )Nr  r`  r[  rx  r\  r   r]  r   r   r   rb  r   )rB   rc  r   r3   rd  r   r*   r*   r+   test_onehot_with_axis_2  s    



z*TestShapeInference.test_onehot_with_axis_2c              	   C  s   t dtjdt dtjd t dtjdg}t dtjd t dtjd t dtjd	g}ttd
dgdgtd
dgdgtd
dgdggd||}| dtjdfdtjdfdtjdfdtjd	fgtddddgddg|dgg }| 	|t dtjd t dtjdg d S )Niter_num_inrx  cond_inr#  r*   cond_outr$  r   r   r  outer_scope_inputr%  max_trip_count	cond_origr&  r   Loopr)  loop_outputr-  Nr   
r   r   rJ   rH   r   r   rK   r   rN   rj   rL   rM   r2  r%  rb   r*   r*   r+   	test_loop  sT    



  zTestShapeInference.test_loopc              	   C  s   t dtjdt dtjd g}t dtjd t dtjdg}ttddgdgtddgdggd	||}| d
tjdfdtjdfdtjdfgtdd
dgdg|dgg }| 	|t dtjdg d S )Nrg  rx  rh  ri  r   r   r  rj  r%  rk  rl  rm  rn  ro  rp  rq  rr  r*   r*   r+   test_loop_no_stateE  s@    



 z%TestShapeInference.test_loop_no_statec                 C  sp   |  g tdg dgtdtjdddtddgdgtdtjd	d
dgg }| |tdtjdtdtjdg d S )Nr  ro   r   r   r  ConstantOfShaper   r  rx  r   rN   r   r   r   rJ   r&  rj   r   r   r*   r*   r+   %test_constantofshape_with_input_shapen  s.    z8TestShapeInference.test_constantofshape_with_input_shapec                 C  sR   |  dtjdfgtddgdgtdtjdddgg }| |tdtjd	g d S )
Nro   r   ru  r   r  rx  r   r  r   rN   r   rJ   r   r   r   rj   r   r   r*   r*   r+   (test_constantofshape_without_input_shape  s     z;TestShapeInference.test_constantofshape_without_input_shapec                 C  sR   |  dtjdfgtddgdgtdtjdddgg }| |tdtjd	g d S )
Nro   rk  ru  r   r  rx  r   r  r*   rx  r   r*   r*   r+   /test_constantofshape_without_input_shape_scalar  s     zBTestShapeInference.test_constantofshape_without_input_shape_scalarc                 C  sp   |  g tdg dgtdtjdddtddgdgtdtjdd	dgg }| |tdtjdtdtjdg d S )
Nr  ro   rx  rk  r  ru  r   r  r   rv  r   r*   r*   r+   $test_constantofshape_with_shape_zero  s.    z7TestShapeInference.test_constantofshape_with_shape_zeroc                 C  sl   |  dtjdfdtjdfgtdddgdddddddgdd	d	gddd	gd
gg }| |tdtjdg d S )Nr@   r  r   r  ConvIntegerr   r   r   rB   r  r  rN   r   r   r   rj   r   r&  r   r*   r*   r+   test_convinteger  s&    


 z#TestShapeInference.test_convintegerc              
   C  sn   |  dtjdfdtjdfdtjdfdtjdfgtdddddgd	d
ddgdgg }| |td	tjdg d S )Nr@   r  r   r  x_zero_pointr*   y_zero_pointr|  r   r   rB   r   r   r  rN   r   r   INT8r   rj   r   r&  r   r*   r*   r+   test_convinetger_dilations  s&    




 z-TestShapeInference.test_convinetger_dilationsc              
   C  sn   |  dtjdfdtjdfdtjdfdtjdfgtdddddgd	d
ddgdgg }| |td	tjdg d S )Nr@   r  r   r  r  r*   r  r|  r   r   rB   r   r   r  )rN   r   r  r   r   rj   r   r&  r   r*   r*   r+   test_convinteger_strides  s&    




 z+TestShapeInference.test_convinteger_stridesc                 C  s\   |  dtjdfdtjdfgtdddgddddd	ddgd
gg }| |tdtjdg d S )Nr@   r  r   r  r|  r   r   rB   r   r   r  r  r   r*   r*   r+   test_convineteger_pads  s    

  z)TestShapeInference.test_convineteger_padsc              	   C  sP   |  dtjdfdtjdfgtdddgdddgg }| |tdtjd	g d S )
Nr@   r  r   r  r|  r   r   r  r  )rN   r   r  r   rj   r   r&  r   r*   r*   r+   test_convineteger_group  s    

 z*TestShapeInference.test_convineteger_groupc                 C  st   |  dtjdfdtjdfdtjdfdtjdfgtdddddgd	d
d
ddd
dgdgg }| |td	tjdg d S )Nr@   r  r   r  r  r*   r  r|  r   r   rB   r   r   r  r}  r   r*   r*   r+   'test_convineteger_partial_missing_shape"  s     




z:TestShapeInference.test_convineteger_partial_missing_shapec                 C  s\   |  dtjdfdtjdfgtdddgddddd	ddgd
gg }| |tdtjd g d S )Nr@   r  r   r  r|  r   r   rB   r   r   r}  r   r*   r*   r+   .test_convineteger_partial_missing_weight_shape6  s    

  zATestShapeInference.test_convineteger_partial_missing_weight_shapec                 C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfd	tjdfd
tjdfdtjdfgtddddddd	d
dgdddddddgdddgdddgdgg }| |tdtjdg d S )Nr@   r  x_scaler*   r  rc  r  w_scalew_zero_pointy_scaler  QLinearConvr   r   r   rB   r  r  rN   r   r   r   r   rj   r   r   r*   r*   r+   test_qlinearconvC  sB    








  z#TestShapeInference.test_qlinearconvc                 C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfd	tjdfd
tjdfdtjdfgtddddddd	d
dgddddgdgg }| |tdtjdg d S )Nr@   r  r  r*   r  rc  r  r  r  r  r  r  r   r   rB   r   r   r  r  r   r*   r*   r+   test_qlinearconv_dilationsh  s>    








 z-TestShapeInference.test_qlinearconv_dilationsc                 C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfd	tjdfd
tjdfdtjdfgtddddddd	d
dgddddgdgg }| |tdtjdg d S )Nr@   r  r  r*   r  rc  r  r  r  r  r  r  r   r   rB   r   r   r  rN   r   r  r   r   rj   r   r   r*   r*   r+   test_qlinearconv_strides  s>    








 z+TestShapeInference.test_qlinearconv_stridesc                 C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfd	tjdfd
tjdfdtjdfgtddddddd	d
dgdddddddgdgg }| |tdtjdg d S )Nr@   r  r  r*   r  rc  r  r  r  r  r  r  r   r   rB   r   r   r  )rN   r   r   r   r  r   rj   r   r   r*   r*   r+   test_qlinearconv_pads  s>    








 z(TestShapeInference.test_qlinearconv_padsc                 C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfd	tjdfd
tjdfdtjdfgtddddddd	d
dgdddgg }| |tdtjdg d S )Nr@   r  r  r*   r  rc  r  r  r  r  r  r  r   r   r  r  r  r   r*   r*   r+   test_qlinearconv_group  s>    








 z)TestShapeInference.test_qlinearconv_groupc                 C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfd	tjdfd
tjdfdtjdfgtddddddd	d
dgdddddddgdgg }| |tdtjdg d S )Nr@   r  r  r*   r  rc  r  r  r  r  r  r  r   r   rB   r   r   r  r  r   r*   r*   r+   &test_qlinearconv_partial_missing_shape  s8    








z9TestShapeInference.test_qlinearconv_partial_missing_shapec                 C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfd	tjdfd
tjdfdtjdfgtddddddd	d
dgdddddddgdgg }| |tdtjd g d S )Nr@   r  r  r*   r  rc  r  r  r  r  r  r  r   r   rB   r   r   r  r   r*   r*   r+   -test_qlinearconv_partial_missing_weight_shape  s>    








 z@TestShapeInference.test_qlinearconv_partial_missing_weight_shapec                 C  s   t t t ||t t ||j}| dtj|fdtj	dfdtjdfdtj|fdtj	dfdtjdfdtj	dfd	tjdfgt
d
dddddddd	gdggg }| |tdtj|g d S Nr   Za_scaler*   a_zero_pointr   Zb_scaleb_zero_pointr  r  ZQLinearMatMulr   )r   r   r   r   r   ro   rN   r   r   r   r   rj   r   rL   r   r   r   rb   r*   r*   r+   _make_qlinearmatmul_test8  sD    








 z+TestShapeInference._make_qlinearmatmul_testc                 C  sL   |  dd |  dd |  dd |  dd |  dd |  dd d S )	Nr   r   r   r   r   r   r   r   )r  r  r*   r*   r+   test_qlinearmatmul`  s    z%TestShapeInference.test_qlinearmatmulc                 C  s   |  dtj|fdtjdfdtjdfdtj|fdtjdfdtjdfdtjdfd	tjdfgtd
dddddddd	gdggg }| |tdtj|g d S r  r  r  r*   r*   r+   &_make_qlinearmatmul_test_allow_unknownh  s<    








 z9TestShapeInference._make_qlinearmatmul_test_allow_unknownc                 C  s   |  ddd |  ddd |  ddd |  ddd |  d	dd |  d	d
d |  ddd |  ddd |  d dd  |  d d d  d S r   )r  r  r*   r*   r+    test_qlinearmatmul_allow_unknown  s      z3TestShapeInference.test_qlinearmatmul_allow_unknownc              	   C  s   t t t ||t t ||j}| dtj|fdtj|fdtjdfdtjdfgt	dddddgdggg }| 
|tdtj|g d S )NAr  r  r*   r  ZMatMulIntegerr   )r   r   r   r   r   ro   rN   r   r   r   rj   r   r&  r  r*   r*   r+   _make_matmulinteger_test  s,    



 
  z+TestShapeInference._make_matmulinteger_testc                 C  sL   |  dd |  dd |  dd |  dd |  dd |  dd d S )Nr   r   r   r   r   r   r   )r  r  r*   r*   r+   test_matmulinteger  s    z%TestShapeInference.test_matmulintegerc                 C  sV   |  d|dfd|dfdtjdfgtddddgdggg }| |tdtjdg d S )Nr@   r   r  r*   r  QuantizeLinearr   rN   r   r   r   rj   r   rL   rn   rb   r*   r*   r+   test_quantizelinear  s    
	 z&TestShapeInference.test_quantizelinearc                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )Nr@   r   r  r*   r  r   rN   r   r   r   rj   r   r   r   r*   r*   r+   test_quantizelinear_default_zp  s     z1TestShapeInference.test_quantizelinear_default_zpc                 C  sP   |  dtjdfdtjdfgtddddgdggg }| |tdtjdg d S )Nr@   r   r  r*   r  rN  r   r  r   r*   r*   r+   "test_quantizelinear_optional_input  s     z5TestShapeInference.test_quantizelinear_optional_inputc              	   C  sT   |  dtjdfdtjdfgtdddgdgtjdgg }| |tdtjdg d S Nr@   r   r  r*   r  r   Zoutput_dtype)rN   r   r   r   ZUINT4rj   r   r   r*   r*   r+    test_quantizelinear_output_dtype  s     z3TestShapeInference.test_quantizelinear_output_dtypec              	   C  s`   |  dtjdfdtjdfdtjdfgtddddgdgtjdgg }| |tdtjdg d S 	Nr@   r   r  r*   r  r  r   r  )rN   r   r   UINT16r   rj   r   r   r*   r*   r+   #test_quantizelinear_zp_output_dtype  s$    


 z6TestShapeInference.test_quantizelinear_zp_output_dtypec              	   C  s\   |  dtjdfdtjdfdtjdfgtddddgdgtjdgg }| tjj	| j
| d S r  )rN   r   r   r  r   ZINT4r   rU   rV   r   rZ   r   r*   r*   r+   .test_quantizelinear_zp_output_dtype_conflicted  s&    


zATestShapeInference.test_quantizelinear_zp_output_dtype_conflictedc              	   C  sP   |  dtjdfdtjdfgtdddgdgtjdgg }| tjj| j	| d S r  )
rN   r   r   r   r   r   rU   rV   r   rZ   r   r*   r*   r+   (test_quantizelinear_invalid_output_dtype  s     z;TestShapeInference.test_quantizelinear_invalid_output_dtypec                 C  sV   |  dtjdfd|dfdtjdfgtddddgdggg }| |td|dg d S )Nr@   r   r  r*   r  ZDequantizeLinearr   r  r  r*   r*   r+   test_dequantizelinear5  s    

	 z(TestShapeInference.test_dequantizelinearc              	   C  s^   |  dtjdfgtddgdddggg }| |tdtjdtdtjdtdtjdg d S )Nr@   r   ZDynamicQuantizeLinearr   r  r  r*   r  r   r*   r*   r+   test_dynamicquantizelinearF  s"      	z-TestShapeInference.test_dynamicquantizelinearc                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )Nr@   r  Zsequence_lensrL  ZReverseSequencer   r  r   r*   r*   r+   test_reversesequenceY  s    

 z'TestShapeInference.test_reversesequencec              
   C  sl   |  dtjdfgtddgddddggg }| |tdtjdtdtjdtdtjdtdtjdg d S )	Nr   rB   r   rB   Uniquer   r  inverse_indicescountsrC   r  r   r*   r*   r+   test_unique_without_axisf  s    z+TestShapeInference.test_unique_without_axisc              
   C  sp   |  dtjdfgtddgddddgdd	gg }| |tdtjd
tdtjdtdtjdtdtjdg d S )Nr   r  r  r   r  r  r  r   r   )rB   NrB   rC   r  r   r*   r*   r+   test_unique_with_axisv  s&    
z(TestShapeInference.test_unique_with_axisc                 C  s   |  dtjdfgtddgdggg }| |tdtjdg |  dtjdfgtddgdggg }| |tdtjdg d S )Nr   r   ZDetr   r*   )r   r3   r   r   r   r  r   r   r*   r*   r+   test_det  s$        zTestShapeInference.test_detc              	   C  s`   | j dtjdfdtjdfgtdddgdggg tdtjddgd}| |tdtjd	g d S )
Nr@   r  repeatsr   Tiler   )r   rB   r   r   r   r   rP  r  r   r*   r*   r+   	test_tile  s     zTestShapeInference.test_tilec                 C  sx   | j dtjdfdtjdfgtdddgdggg tdtjdtjddd	gd
d ddgd}| 	|t
dtjdg d S )Nr@   r  r  r   r  r   r   rB   r   rA  r3  Tr5  r   r  r  r   r*   r*   r+   test_tile_raw_input_data  s"     z+TestShapeInference.test_tile_raw_input_datac                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )Nr@   r  r  r   r  r   r   r  r   r*   r*   r+   test_tile_rank_inference  s    z+TestShapeInference.test_tile_rank_inferencez-ONNX_ML required to test ai.onnx.ml operatorsc                 C  sz   |  dtjdfgtddgddgtddgddgd	d
gdgg }| j|tdtjdtdtjdgttd	tt	dgd d S )Nr@   rL  LinearClassifierr   r   g-C6J?g-C6Jr/  r   rB   r'   ZcoefficientsZ
interceptsZclasslabels_intsrx  r   rJ  r   
rN   r   r   r   r   rj   r   rJ   r   r   r   r*   r*   r+   test_linearclassifier_1D_input  s.    z1TestShapeInference.test_linearclassifier_1D_inputc                 C  s   |  dtjdfgtddgddgtdddd	d
dgdddgdddgdgg }| j|tdtjdtdtjdgttdtt	dgd d S )Nr@   r  r  r   r   皙?皙?g333333?皙?r  g333333?r/  g      @r   rB   r   r  r"  r  rJ  r   r  r   r*   r*   r+   test_linearclassifier_2D_input  s.    z1TestShapeInference.test_linearclassifier_2D_inputc              
   C  s`   |  dtjdfdtjdfdtjdfgtddddgdgd	d
dgg }| |tdtjdg d S )Nr@   r   CHr  r  num_roisr   batch_indicesr  RoiAlignr   r   r3   )Zoutput_heightZoutput_width)r  r  r   r3   r  r   r*   r*   r+   test_roialign_symbolic  s     


	z)TestShapeInference.test_roialign_symbolicc                 C  sZ   |  dtjdfdtjdfdtjdfgtddddgdggg }| |tdtjd	g d S )
Nr@   r  r  r  r  r  r  r   )r  r  r   r   r  r   r*   r*   r+   test_roialign_symbolic_defaults  s    


	z2TestShapeInference.test_roialign_symbolic_defaultsc                 C  sZ   |  dtjdfdtjdfdtjdfgtddddgdggg }| |tdtjd	g d S )
Nr@   r  r  r  r  )r   r  r   )r   r  r   r   r  r   r*   r*   r+   test_roialign_num_rois  s    


	z)TestShapeInference.test_roialign_num_roisLabelEncoderT)Zskip_on_emptyc                 C  sN  |  |dk d dddg}dddg}d	d
dg}| dtjdfgtddgdgt||dgg }| j|tdtjdgt	t|t	t
dgd | dtjdfgtddgdgt||dgg }| j|tdtjdgt	t|t	t
dgd | dtjdfgtddgdgt||dgg }| j|tdtjdgt	t|t	t
dgd | dtjdfgtddgdgt||dgg }| j|tdtjdgt	t|t	t
dgd | dtjdfgtddgdgt||dgg }| j|tdtjdgt	t|t	t
dgd | dtjdfgtddgdgt||dgg }| j|tdtjdgt	t|t	t
dgd d S )NrB   z7keys_* attributes were introduced in ai.onnx.ml opset 2r  mr   g{GW@g      B@g     Xr      V   r@   r   r   r  )r'   keys_stringsvalues_int64srJ  r   r   )r'   keys_int64svalues_stringsr   )r'   keys_floatsr  rL  )r'   r  values_floatsr*   )r'   r  r  r   )r'   r  r  )r~   rN   r   r   r   r   rj   r   rJ   r   r   r   )rL   r   r)   Zstring_listZ
float_listZ
int64_listrb   r*   r*   r+   test_label_encoder_string_int64*  s     



	
	
	
	
	
z2TestShapeInference.test_label_encoder_string_int64c                 C  s   |  |dk d tdtjdgddddg}tdtjdgd	d
ddg}| dtjdfgtddgdgt||tdtjd	gdgdgg }| j|t	dtjdgt
t|t
tdgd d S )Nr   z7tensor attributes were introduced in ai.onnx.ml opset 4keys_tensorr   r   ccdddvalues_tensorr   rB   r   r@   r  Nr   r   r  r   default_tensorr   r'   r  r  r  rJ  r   )r~   r   r   r   rJ   rN   r   r   rj   r   r   r   )rL   r   r)   
key_tensorr  rb   r*   r*   r+   $test_label_encoder_tensor_attributes  sT        
   
   z7TestShapeInference.test_label_encoder_tensor_attributesc                 C  s  |  |dk d tdtjdgddddg}tdtjdgd	d
ddg}tt|ttdg}| dtjdfgt	ddgdgt||tdtjd	gdgdgg }| j
tjj| j||d | dtjdfgt	ddgdgt|ddddgtdtjd	d
gddgdgg }| j
tjj| j||d d S )Nr   z2tensor attributes introduced in ai.onnx.ml opset 4r  r   r   r  r  r  r   rB   r   rJ  r@   r  r  r   r  r   r  r   )r'   r  r  r  )r~   r   r   r   rJ   r   r   r   rN   r   r   rU   rV   r   rZ   )rL   r   r)   r  r  r   rb   r*   r*   r+   ;test_label_encoder_tensor_attributes_invalid_configurations  s       
   
   
   zNTestShapeInference.test_label_encoder_tensor_attributes_invalid_configurationsr   )ro   r\  indices_shaper  r    c                 C  sT   t  }|j| t|}|jtdtj	|f| |j
tdtj	|| |S )NZspvalZspind)r   Zdimsextendrd   r\  ZCopyFromr   r   r   rJ   r  )rL   ro   r\  r  r  sparseZnnzr*   r*   r+   make_sparse,  s    zTestShapeInference.make_sparsec              	   C  s^   dg}|  |dddgdgdddg}| g td	g d
g|dgg }| |td
tj|g d S )NrS  r  r     r   r      Q   r  r   )Zsparse_value)r  rN   r   rj   r   r   rJ   )rL   Zy_shapeZy_valuerb   r*   r*   r+   test_constant_sparse>  s      z'TestShapeInference.test_constant_sparsec              	   C  s:   |  g tdg dgddgg }| |tdtjg g d S )Nr  r   *   )Z	value_int)rN   r   rj   r   r   rJ   r   r*   r*   r+   test_constant_value_intF  s       z*TestShapeInference.test_constant_value_intc              	   C  sJ   dddg}|  g tdg dg|dgg }| |tdtjt|gg d S )Nr   rB   r   r  r   )
value_ints)rN   r   rj   r   r   rJ   rd   )rL   r  rb   r*   r*   r+   test_constant_value_intsN  s    
   z+TestShapeInference.test_constant_value_intsc              	   C  s:   |  g tdg dgddgg }| |tdtjg g d S )Nr  r   gQ?)Zvalue_float)rN   r   rj   r   r   r   r   r*   r*   r+   test_constant_value_floatW  s       z,TestShapeInference.test_constant_value_floatc              	   C  sJ   dddg}|  g tdg dg|dgg }| |tdtjt|gg d S )Nr  r  g333333?r  r   )value_floats)rN   r   rj   r   r   r   rd   )rL   r  rb   r*   r*   r+   test_constant_value_floats_  s    
   z-TestShapeInference.test_constant_value_floatsc              	   C  s:   |  g tdg dgddgg }| |tdtjg g d S )Nr  r   zString value)Zvalue_string)rN   r   rj   r   r   r   r   r*   r*   r+   test_constant_value_stringh  s       z-TestShapeInference.test_constant_value_stringc              	   C  sL   ddddg}|  g tdg dg|dgg }| |tdtjt|gg d S )Nonr@   r  r   )value_strings)rN   r   rj   r   r   r   rd   )rL   r  rb   r*   r*   r+   test_constant_value_stringsp  s      z.TestShapeInference.test_constant_value_stringsc                 C  s   | j dtjdfdtjdfdtjdfgtddddgdggg tdtjddtdtjddtdtjdd	gd
}| |tdtjd	g d S )Nrs  r*   limitdeltaRanger   rx  rL  r   r   )rN   r   r   r   r   rj   r   r   r*   r*   r+   
test_rangez  s     


 zTestShapeInference.test_rangec              
   C  sz   | j dtjdfdtjdfdtjdfgtddddgdggg tdtjddtdtjddgd	}| |tdtjd
g d S )Nrs  r*   r  r  r   r   rx  rL  r   rC   )rN   r   r&  r   r   rj   r   r   r*   r*   r+   test_range_rank_inference  s    


z,TestShapeInference.test_range_rank_inferencec                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )Nr@   r  r  r   GatherNDr   r   r  r   r*   r*   r+   test_gathernd  s     z TestShapeInference.test_gatherndc              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjd	g d S )
Nr@   r   r  r   r  r   r   )Z
batch_dimsr   r  r   r*   r*   r+   test_gathernd_batchdim_1  s    

 z+TestShapeInference.test_gathernd_batchdim_1c                 C  sL   |  dtjdfdtjdfgtdddgdgg }| |tdtjdg d S )Nr@   r   r   rx  ZCumSumr   r   r   r*   r*   r+   test_cumsum  s     zTestShapeInference.test_cumsumc                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )NZboxesr   r   r   Zscores)r   r3   r   ZNonMaxSuppressionr   rp  r  r   r*   r*   r+   test_nonmaxsuppression  s    

z)TestShapeInference.test_nonmaxsuppressionc                 C  s6   |  g tdg dggg }| |tdtjd g d S )NZSequenceEmptyr   )rN   r   rj   r   r   r   r   r*   r*   r+   test_sequence_empty  s    z&TestShapeInference.test_sequence_emptyc                 C  sZ   |  dtjdfdtjdfdtjdfgtddddgdggg }| |tdtjdg d S )Nr  r   r  r  r	  r  r  r   r*   r*   r+   test_sequence_construct  s,    


  z*TestShapeInference.test_sequence_constructc                 C  sB   |  dtjdfgtddgdggg }| |tdtjdg d S )Nr  r   r	  r  r  r   r*   r*   r+   !test_sequence_construct_one_input  s      z4TestShapeInference.test_sequence_construct_one_inputc                 C  sZ   |  dtjdfdtjdfdtjdfgtddddgdggg }| |tdtjd g d S )Nr  r   r  r   r  r	  r  r  r   r*   r*   r+   !test_sequence_construct_diff_rank  s,    


  z4TestShapeInference.test_sequence_construct_diff_rankc                 C  sZ   |  dtjdfdtjdfdtjdfgtddddgdggg }| |tdtjd	g d S )
Nr  r   r  r`  r  r=  r	  r  rB   r   Nr  r   r*   r*   r+   %test_sequence_construct_diff_dim_size  s,    


  z8TestShapeInference.test_sequence_construct_diff_dim_sizec                 C  s   |  dtjdfdtjdfdtjdfdtjdfgtddddgdgtdddgd	ggg }| |tdtjdtd	tjdg d S )
Nr  r   r  r  input4r	  r
  SequenceInsertr  r  r   r*   r*   r+   test_sequence_insert'  sB    



        z'TestShapeInference.test_sequence_insertc                 C  s   |  dtjdfdtjdfdtjdfdtjdfgtddddgdgtd	ddgd
ggg }| |tdtjdtd
tjd g d S )Nr  r   r  r  r  r   r	  r
  r  r  r  r   r*   r*   r+   test_sequence_insert_diff_rankE  sB    



        z1TestShapeInference.test_sequence_insert_diff_rankc                 C  s   |  dtjdfdtjdfdtjdfdtjdfgtddddgd	gtd
d	dgdggg }| |td	tjdtdtjdg d S )Nr  r   r  r  r  r  rB   r3   rB   r	  r
  r  r  r  rB   NNr  r   r*   r*   r+   test_sequence_insert_diff_shapec  s:    



      z2TestShapeInference.test_sequence_insert_diff_shapec                 C  s   |  dtjdfdtjdfdtjdfdtjdfgtddddgdgtd	ddgd
ggg }| |tdtjdtd
tjdg d S )Nr  r   r  r  indr*   r	  r
  
SequenceAtr   rN   r   r   rJ   r   rj   r   r   r   r*   r*   r+   test_sequence_at  s2    



    z#TestShapeInference.test_sequence_atc                 C  s   |  dtjdfdtjdfdtjdfdtjdfgtddddgd	gtd
d	dgdggg }| |td	tjd tdtjd g d S )Nr  r   r  r   r  r  r*   r	  r
  r  r   r  r   r*   r*   r+   test_sequence_at_unknown_shape  s*    



  z1TestShapeInference.test_sequence_at_unknown_shapec                 C  s   |  dtjdfdtjdfdtjdfdtjdfgtddddgd	gtd
d	dgdggg }| |td	tjdtdtjdg d S )Nr  r   r  r`  r  r  r*   r	  r
  r  r   r  r  r   r*   r*   r+   !test_sequence_at_unknown_dim_size  s*    



  z4TestShapeInference.test_sequence_at_unknown_dim_sizec                 C  s   |  dtjdfdtjdfdtjdfdtjdfgtddddgdgtd	ddgd
ggg }| |tdtjdtd
tjdg d S )Nr  r   r  r  r  r*   r	  r
  SequenceEraser  rN   r   r   rJ   r   rj   r   r   r*   r*   r+   test_sequence_erase  s:    



      z&TestShapeInference.test_sequence_erasec                 C  s   |  dtjdfdtjdfdtjdfdtjdfgtddddgd	gtd
d	dgdggg }| |td	tjdtdtjdg d S )Nr  rB   r   r@   r  r  )rB   r3   r@   r  r*   r	  r
  r  r  rB   Nr@   r  r   r*   r*   r+   !test_sequence_erase_diff_dim_size  s2    



    z4TestShapeInference.test_sequence_erase_diff_dim_sizec                 C  st   |  dtjdfdtjdfdtjdfgtddddgdgtddgdggg }| |tdtjdtdtjd	g d S )
Nr  r   r  r  r	  r
  ZSequenceLengthrd   r*   )rN   r   r   r   rj   r   r   rJ   r   r*   r*   r+   test_sequence_length  s0    


    z'TestShapeInference.test_sequence_lengthc              	   C  s`   | j dtjdfdtjdfgtdddgdggg tdtjddgd}| |tdtjd	g d S )
Nr   r   r   r  r   SplitToSequencer  r   r   rB  rN   r   r   r&  r   r   rj   r   r   r*   r*   r+   test_split_to_sequence  s      z)TestShapeInference.test_split_to_sequencec              	   C  s`   | j dtjdfdtjdfgtdddgdggg tdtjddgd}| |tdtjd	g d S )
Nr   r$  r  r*   r%  r  r   r   r   r&  r   r*   r*   r+   test_split_to_sequence_scalar(  s      z0TestShapeInference.test_split_to_sequence_scalarc              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr   r$  r%  r  r   r  r  r  r   r*   r*   r+   test_split_to_sequence_keepdims8  s      z2TestShapeInference.test_split_to_sequence_keepdimsc              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr   r$  r%  r  r   r  r"  r  r   r*   r*   r+   #test_split_to_sequence_not_keepdimsG  s      z6TestShapeInference.test_split_to_sequence_not_keepdimsc              	   C  sd   | j dtjdfdtjdfgtdddgdgddgg tdtjdd	gd
}| |tdtjdg d S )Nr   r$  r  r   r%  r  r   r  r   r   rB  r&  r   r*   r*   r+   &test_split_to_sequence_ignore_keepdimsV  s*      z9TestShapeInference.test_split_to_sequence_ignore_keepdimsc              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr   r$  r%  r  r   r   r  r  r   r*   r*   r+   test_split_to_sequence_axism  s      z.TestShapeInference.test_split_to_sequence_axisc              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr   r$  r%  r  r  r   r  r  r   r*   r*   r+   test_split_to_sequence_neg_axis|  s      z2TestShapeInference.test_split_to_sequence_neg_axisc              	   C  s`   | j dtjdfdtjdfgtdddgdggg tdtjddgd}| |tdtjd	g d S )
Nr   r$  r  r   r%  r  r  r   Nr   r&  r   r*   r*   r+   "test_split_to_sequence_split_sizes  s      z5TestShapeInference.test_split_to_sequence_split_sizesc              	   C  s`   | j dtjdfdtjdfgtdddgdggg tdtjddgd}| |tdtjd	g d S )
Nr   r$  r  r*   r%  r  r"  r   r.  r&  r   r*   r*   r+   $test_split_to_sequence_non_divisible  s      z7TestShapeInference.test_split_to_sequence_non_divisiblec              
   C  sx   |  dtjdfdtjdfdtjdfgtddddgdgtddgdgd	d
gg }| |tdtjdtdtjdg d S )Nr  r   r  r  r	  r
  ConcatFromSequencer   r   r   )Nr   r@   rN   r   r   r   rj   r   r   r   r*   r*   r+   test_concat_from_sequence  s0    


    z,TestShapeInference.test_concat_from_sequencec              
   C  sx   |  dtjdfdtjdfdtjdfgtddddgdgtddgd	gd
dgg }| |tdtjd td	tjd g d S )Nr  r   r  r   r  r	  r
  r1  r   r   r   r2  r   r*   r*   r+   'test_concat_from_sequence_unknown_shape  s(    


  z:TestShapeInference.test_concat_from_sequence_unknown_shapec              
   C  sx   |  dtjdfdtjdfdtjdfgtddddgdgtddgd	gd
dgg }| |tdtjdtd	tjdg d S )Nr  r   r  rB   r   r@   r  r	  r
  r1  r   r   r   r!  NNr@   r2  r   r*   r*   r+   *test_concat_from_sequence_unknown_dim_size  s(    


  z=TestShapeInference.test_concat_from_sequence_unknown_dim_sizec              
   C  sx   |  dtjdfdtjdfdtjdfgtddddgdgtddgd	gd
dgg }| |tdtjdtd	tjdg d S )Nr  r   r  r5  r  r	  r
  r1  r   rB   r   r!  r  r2  r   r*   r*   r+   test_concat_from_sequence_axis  s(    


  z1TestShapeInference.test_concat_from_sequence_axisc              
   C  sx   |  dtjdfdtjdfdtjdfgtddddgdgtddgd	gd
dgg }| |tdtjdtd	tjdg d S )Nr  r   r  r5  r  r	  r
  r1  r   r   r!  r6  r2  r   r*   r*   r+   "test_concat_from_sequence_neg_axis	  s(    


  z5TestShapeInference.test_concat_from_sequence_neg_axisc                 C  sz   |  dtjdfdtjdfdtjdfgtddddgdgtddgdgd	d
dgg }| |tdtjdtdtjdg d S )Nr  r   r  r  r	  r
  r1  r   rB   r   r   Znew_axis)rB   r   Nr@   r2  r   r*   r*   r+   "test_concat_from_sequence_new_axis   s<    


        z5TestShapeInference.test_concat_from_sequence_new_axisc                 C  sz   |  dtjdfdtjdfdtjdfgtddddgdgtddgdgd	d
dgg }| |tdtjdtdtjdg d S )Nr  r   r  r  r	  r
  r1  r   r!   r   r;  )rB   r   r@   Nr2  r   r*   r*   r+   &test_concat_from_sequence_neg_new_axis;  s<    


        z9TestShapeInference.test_concat_from_sequence_neg_new_axisc              
   C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfgtddddddgd	d
gtdgg }| j|td	tjdtd
tjdgt	t
dt	tdgd d S )NRr*   Tr   r   Gr  AdagradX_newH_newr4   r   r   r   rN   r   r   rJ   r   r   rj   r   r   r   r   r   r*   r*   r+   test_adagradV  s2    






zTestShapeInference.test_adagradc                 C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfd	tjdfd
tjdfdtjdfgtddddddd	d
dgddddgtdgg }| j|tdtjdtdtjdtdtjdtdtjdgt	t
dt	tdgd d S )Nr>  r*   r?  X1r   X2rB  G1G2H1H2rA  X1_newX2_newH1_newH2_newr4   r   r   r   rD  r   r*   r*   r+   test_adagrad_multiplev  s<    










z(TestShapeInference.test_adagrad_multiplec                 C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfgtddddddgd	d
gddddtdgg }| j|td	tjdtd
tjdgt	t
dt	tdgd d S )Nr>  r*   r?  r   r   r@  VMomentumrB  V_new?r  {Gz?standardr  r  norm_coefficientr\  r'   r   r   r   rD  r   r*   r*   r+   test_momentum  s:    






z TestShapeInference.test_momentumc                 C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfd	tjdfd
tjdfdtjdfgtddddddd	d
dgddddgddddtdgg }| j|tdtjdtdtjdtdtjdtdtjdgt	t
dt	tdgd d S )Nr>  r*   r?  rF  r   rG  rB  rH  rI  V1V2rR  rL  rM  V1_newV2_newrT  r  rU  ZnesterovrW  r   r   r   rD  r   r*   r*   r+   test_momentum_multiple  sD    










z)TestShapeInference.test_momentum_multiplec                 C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfdtjdfgtd	ddddddgd
ddgtddddgg }td
tjdtdtjdtdtjdg}| j||ttdtt	dgd d S )Nr>  r*   r?  r   r   r@  rQ  r  AdamrB  rS  rC  rT  r  rU  r'   r  r  rX  r   r   r   
rN   r   r   rJ   r   r   r   rj   r   r   rL   rb   Zinfosr*   r*   r+   	test_adam  s>    





	zTestShapeInference.test_adamc                 C  s  |  dtjdfdtjdfdtjdfdtjdfdtjdfd	tjdfd
tjdfdtjdfdtjdfdtjdfg
tddddddd	d
dddg
ddddddgtddddgg }tdtjdtdtjdtdtjdtdtjdtdtjdtdtjdg}| j||ttdtt	dgd d S )Nr>  r*   r?  rF  r   rG  rB  rH  rI  rZ  r[  rJ  rK  r_  rL  rM  r\  r]  rN  rO  rT  r  rU  r`  r   r   r   ra  rb  r*   r*   r+   test_adam_multiple  sL    









	z%TestShapeInference.test_adam_multiplec                 C  s\   |  dtjdfgtdddddddddgdgg }| j|tdtjd	gttd
gd d S )Nr@   r   NrB   Padr   r   r   r   r   r   Nr   r   r   r   r   r*   r*   r+   test_pad_opset10<  s    z#TestShapeInference.test_pad_opset10c                 C  sd   |  dtjdfgtddddddddddd	gd
ddgg }| j|tdtjdgttdgd d S )Nr@   )rB   r   r   r   rf  r   r   r   r   r   rB   Zconstantr/  )r   r\  r  )rB   r   rJ  r   r   r   r   r   r*   r*   r+   test_constant_pad_2d_opset10H  s$    
z/TestShapeInference.test_constant_pad_2d_opset10c              	   C  s^   | j dtjdfdtjdfgtdddgdgg tdtjddgd}| |tdtjd	g d S )
Nr@   re  r   r  rf  r   )r   r   r   r   r   r   r   rg  r  r   r*   r*   r+   test_pad]  s    zTestShapeInference.test_padc                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )Nr@   r  r  r   r  r   r  r   r*   r*   r+   test_gatherelements_basict  s     z,TestShapeInference.test_gatherelements_basicc                 C  sN   |  dtjdfdtjd fgtdddgdggg }| |tdtjd g d S )Nr@   r  r  r  r   r  r   r*   r*   r+   )test_gatherelements_indices_missing_shape~  s    

z<TestShapeInference.test_gatherelements_indices_missing_shapec              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   rB  Einsumr   zij->jiZequationr  r   r   r*   r*   r+   test_einsum_transpose  s    z(TestShapeInference.test_einsum_transposec              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )	Nr@   rx  r   rm  r   i,i->rn  r*   r   r   r*   r*   r+   test_einsum_dot  s    z"TestShapeInference.test_einsum_dotc              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )Nr@   r*   r   rm  r   z,->rn  r   r   r*   r*   r+   test_einsum_scalar  s    z%TestShapeInference.test_einsum_scalarc              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjd	g d S )
Nr@   rZ  r   )r   r   rm  r   zij,ab->ijabrn  )r   r3   r   r   r   r   r*   r*   r+   test_einsum_outer_prod  s    z)TestShapeInference.test_einsum_outer_prodc              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   rB  rm  r   zi j->i rn  r   r   r   r*   r*   r+   test_einsum_sum_along_dim  s    z,TestShapeInference.test_einsum_sum_along_dimc              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   )r   r   r   rm  r   z... ii ->... irn  rB  r   r   r*   r*   r+   test_einsum_ellipsis  s    z'TestShapeInference.test_einsum_ellipsisc              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjd	g d S )
Nr@   r   r   rB   r   r3   rm  r   ...ij,...jk->...ikrn  r`  r   r   r*   r*   r+   test_einsum_ellipsis_2  s     z)TestShapeInference.test_einsum_ellipsis_2c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjd	g d S )
Nr@   r   r   rv  rm  r   z...ij,...jkrn  r`  r   r   r*   r*   r+   test_einsum_ellipsis_3  s     z)TestShapeInference.test_einsum_ellipsis_3c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjd	g d S )
Nr@   r  r   )rm  r   r3   rm  r   rw  rn  )rm  r   r3   r   r   r*   r*   r+   test_einsum_ellipsis_broadcast  s     z1TestShapeInference.test_einsum_ellipsis_broadcastc              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjd	g d S )
Nr@   )r3   r   r   r  r   )r  r   r   rm  r   zabcd,dfg->abcfgrn  )r3   r   r   r   r   r   r   r*   r*   r+   test_einsum_contraction  s    

z*TestShapeInference.test_einsum_contractionc              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjd	g d S )
Nr@   r   r   rZ  rm  r   z
ijk,ik->jkrn  r  r   r   r*   r*   r+   test_einsum_contraction_2  s     z,TestShapeInference.test_einsum_contraction_2c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjd	g d S )
Nr@   )r3   rB   r   r   )r3   r   r   rm  r   zbij , b jk-> bikrn  )r3   rB   r   r   r   r*   r*   r+   test_einsum_batch_matmul  s    z+TestShapeInference.test_einsum_batch_matmulc              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjd	g d S )
Nr@   r   r   rB  rm  r   zij,klrn  )rB   r   r   r   r   r   r*   r*   r+   test_einsum_left_hand_eqn  s    z,TestShapeInference.test_einsum_left_hand_eqnc              	   C  sX   |  dtjdfdtjdfdtjdfgtdddgdgddgg }| tjj| j| d S )Nr@   r   r   r   rm  zi,...j, k, l-> irn  r   r   r*   r*   r+    test_einsum_incorrect_num_inputs  s    


	z3TestShapeInference.test_einsum_incorrect_num_inputsc              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   r   rm  r   r  rn  r   r   r*   r*   r+   test_einsum_view_A1  s    z&TestShapeInference.test_einsum_view_A1c              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   r   rm  r   zi->rn  r*   r   r   r*   r*   r+   test_einsum_sum_A1  s    z%TestShapeInference.test_einsum_sum_A1c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )Nr@   r   r   rm  r   zi,i->irn  r   r   r*   r*   r+   -test_einsum_element_wise_multiplication_A1_B1  s    z@TestShapeInference.test_einsum_element_wise_multiplication_A1_B1c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )	Nr@   r   r   rm  r   rp  rn  r*   r   r   r*   r*   r+   test_einsum_inner_product_A1_B1%  s    z2TestShapeInference.test_einsum_inner_product_A1_B1c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )	Nr@   r   r   rm  r   zi,j->ijrn  r   r   r   r*   r*   r+   test_einsum_outer_product_A1_B1-  s    z2TestShapeInference.test_einsum_outer_product_A1_B1c              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   r   rm  r   zij->ijrn  r   r   r*   r*   r+   test_einsum_view_A25  s    z&TestShapeInference.test_einsum_view_A2c              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   r   rm  r   Zijrn  r   r   r*   r*   r+   test_einsum_view_A2_2=  s    z(TestShapeInference.test_einsum_view_A2_2c              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   r   rm  r   Zjirn  r   r   r*   r*   r+   test_einsum_transpose_A2E  s    z+TestShapeInference.test_einsum_transpose_A2c              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   r   rm  r   zji->ijrn  r   r   r*   r*   r+   test_einsum_transpose_A2_to_ijM  s    z1TestShapeInference.test_einsum_transpose_A2_to_ijc              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   r   rm  r   zii->irn  r   r   r   r*   r*   r+   test_einsum_diag_A2U  s    z&TestShapeInference.test_einsum_diag_A2c              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   r   rm  r   zii->rn  r*   r   r   r*   r*   r+   test_einsum_trace_A2]  s    z'TestShapeInference.test_einsum_trace_A2c              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   r   rm  r   zij->rn  r*   r   r   r*   r*   r+   test_einsum_sum_A2e  s    z%TestShapeInference.test_einsum_sum_A2c              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   r   rm  r   zij->jrn  r   r   r   r*   r*   r+   test_einsum_sum_columns_A2m  s    z-TestShapeInference.test_einsum_sum_columns_A2c              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   r   rm  r   zij->irn  r   r   r   r*   r*   r+   test_einsum_sum_rows_A2w  s    z*TestShapeInference.test_einsum_sum_rows_A2c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )Nr@   r   r   rm  r   z	ij,ij->ijrn  r   r   r*   r*   r+   -test_einsum_element_wise_multiplication_A2_B2  s    z@TestShapeInference.test_einsum_element_wise_multiplication_A2_B2c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )Nr@   r   r   rm  r   z	ij,ji->ijrn  r   r   r*   r*   r+   7test_einsum_element_wise_multiplication_A2_B2_transpose  s    zJTestShapeInference.test_einsum_element_wise_multiplication_A2_B2_transposec              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )Nr@   r   r   rm  r   zij,jkrn  r   r   r*   r*   r+   'test_einsum_matrix_multiplication_A2_B2  s    z:TestShapeInference.test_einsum_matrix_multiplication_A2_B2c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )Nr@   r   r   rm  r   z	ij,jk->ikrn  r   r   r*   r*   r+   -test_einsum_matrix_multiplication_A2_B2_to_ik  s    z@TestShapeInference.test_einsum_matrix_multiplication_A2_B2_to_ikc              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )Nr@   r  r   rm  r   zbij,bjk->bikrn  r   r   r*   r*   r+   'test_einsum_matrix_multiplication_A3_B3  s    z:TestShapeInference.test_einsum_matrix_multiplication_A3_B3c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )Nr@   r  r   rm  r   zbij,bkj->bikrn  r   r   r*   r*   r+   1test_einsum_matrix_multiplication_A3_B3_transpose  s    zDTestShapeInference.test_einsum_matrix_multiplication_A3_B3_transposec              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )Nr@   r   r   rm  r   z	ij,kj->ikrn  r   r   r*   r*   r+   test_einsum_inner_product_A2_B2  s    z2TestShapeInference.test_einsum_inner_product_A2_B2c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )	Nr@   r   r   rm  r   z
ij,kj->ikjrn  )r   r   r   r   r   r*   r*   r+   $test_einsum_row_multiplication_A2_B2  s    z7TestShapeInference.test_einsum_row_multiplication_A2_B2c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )	Nr@   r   r   rm  r   zij,kl->ijklrn  )r   r   r   r   r   r   r*   r*   r+   &test_einsum_value_multiplication_A2_B2  s    z9TestShapeInference.test_einsum_value_multiplication_A2_B2c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )	Nr@   r*   r   r   rm  r   z,ij->ijrn  r   r   r*   r*   r+   test_einsum_scalar_times_array  s    z1TestShapeInference.test_einsum_scalar_times_arrayc              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )	Nr@   r   r   r   rm  r   zij,j->irn  r   r   r*   r*   r+   test_einsum_matrix_vector_A2_B1  s    z2TestShapeInference.test_einsum_matrix_vector_A2_B1c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )	Nr@   r   r   rm  r   zii,ii->irn  r   r   r   r*   r*   r+   %test_einsum_diag_multiplication_A2_B2  s    z8TestShapeInference.test_einsum_diag_multiplication_A2_B2c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )	Nr@   r   r   rm  r   zii,ii->rn  r*   r   r   r*   r*   r+   "test_einsum_diag_dot_product_A2_B2  s    z5TestShapeInference.test_einsum_diag_dot_product_A2_B2c              	   C  sb   d\}}|  dtj||ffdtj|ffgtdddgdgddgg }| |tdtj|fg d S )NrB  r   targetNegativeLogLikelihoodLosslossnoneZ	reductionr  rL   r   r  rb   r*   r*   r+   (test_negative_log_likehood_shape_is_NCdd  s    z;TestShapeInference.test_negative_log_likehood_shape_is_NCddc              	   C  sp   d\}}|  dtj||ffdtj|ffdtj|ffgtddddgdgddgg }| |tdtj|fg d S )	NrB  r   r  weightr  r  r  r  r  r  r*   r*   r+   2test_negative_log_likehood_shape_is_NC_with_weight	  s     zETestShapeInference.test_negative_log_likehood_shape_is_NC_with_weightc              	   C  s`   d\}}|  dtj||ffdtj|ffgtdddgdgddgg }| |tdtjdg d S )	NrB  r   r  r  r  r  r  r*   r  r  r*   r*   r+   5test_negative_log_likehood_shape_is_NC_reduction_mean  s    zHTestShapeInference.test_negative_log_likehood_shape_is_NC_reduction_meanc              	   C  sn   d\}}|  dtj||ffdtj|ffdtj|ffgtddddgdgddgg }| |tdtjd	g d S )
NrB  r   r  r  r  r  r  r  r*   r  r  r*   r*   r+   Atest_negative_log_likehood_shape_is_NC_with_weight_reduction_mean-  s     zTTestShapeInference.test_negative_log_likehood_shape_is_NC_with_weight_reduction_meanc              	   C  sr   d\}}}}|  dtj||||ffdtj|||ffgtdddgdgddgg }| |tdtj|||fg d S )Nr   r   r3   r   r   r  r  r  r  r  r  rL   r   r  d1Zd2rb   r*   r*   r+   *test_negative_log_likehood_shape_is_NCd1d2A  s    z=TestShapeInference.test_negative_log_likehood_shape_is_NCd1d2c              	   C  s   d\}}}}|  dtj||||ffdtj|||ffdtj|ffgtddddgdgddgg }| |tdtj|||fg d S )	Nr  r   r  r  r  r  r  r  r  r  r*   r*   r+   6test_negative_log_likehood_shape_is_NCd1d2_with_weightT  s     zITestShapeInference.test_negative_log_likehood_shape_is_NCd1d2_with_weightc              	   C  sl   d\}}}}|  dtj||||ffdtj|||ffgtdddgdgddgg }| |tdtjdg d S )	Nr  r   r  r  r  sumr  r*   r  r  r*   r*   r+   8test_negative_log_likehood_shape_is_NCd1d2_reduction_sumh  s    zKTestShapeInference.test_negative_log_likehood_shape_is_NCd1d2_reduction_sumc              	   C  sz   d\}}}}|  dtj||||ffdtj|||ffdtj|ffgtddddgdgddgg }| |tdtjd	g d S )
Nr  r   r  r  r  r  r  r  r*   r  r  r*   r*   r+   Etest_negative_log_likehood_shape_is_NCd1d2_with_weight_reduction_mean{  s     zXTestShapeInference.test_negative_log_likehood_shape_is_NCd1d2_with_weight_reduction_meanc              	   C  s   d\}}}}|  dtj|||ffdtj||d |ffdtj|ffdtjdfgtddddgdgd	d
gg }| tjj| j	| d S )Nr  r   r  r   r  r  r*   r  r  r  )
rN   r   r   rJ   r   r   rU   rV   r   rZ   r  r*   r*   r+   6test_negative_log_likehood_input_target_shape_mismatch  s"    
zITestShapeInference.test_negative_log_likehood_input_target_shape_mismatchc              
   C  s   d\}}}}|  dtj||||ffdtj|||ffdtj|d ffdtj|||ffgtddddgdgdd	gg }| tj| j| d S )
Nr  r   r  r  r   r  r  r  r  )	rN   r   r   rJ   r   r   r   r*  rZ   r  r*   r*   r+   6test_negative_log_likehood_input_weight_shape_mismatch  s"    zITestShapeInference.test_negative_log_likehood_input_weight_shape_mismatchc              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )	Nr@   r   r   r   SoftmaxCrossEntropyLossr   r  r  r   r   r*   r*   r+   test_softmax_cross_entropy_none  s    z2TestShapeInference.test_softmax_cross_entropy_nonec              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjd	g d S )
Nr@   r   r   r   r  r   r  r  r*   r   r   r*   r*   r+   test_softmax_cross_entropy_mean  s    z2TestShapeInference.test_softmax_cross_entropy_meanc              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjdg d S )	Nr@   )rB   r   r3   r  r   )rB   r3   r  r  r   r  r  r   r   r*   r*   r+   &test_softmax_cross_entropy_none_NCD1D2  s    

z9TestShapeInference.test_softmax_cross_entropy_none_NCD1D2c              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjd	g d S )
Nr@   rI  r   rv  r  r   r  r  r*   r   r   r*   r*   r+   &test_softmax_cross_entropy_mean_NCD1D2  s    

z9TestShapeInference.test_softmax_cross_entropy_mean_NCD1D2c              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr   r  ZCelur   r/  )r  r   r   r*   r*   r+   test_celu_function_output_shape  s     z2TestShapeInference.test_celu_function_output_shapec           
      C  s   t dddgdg}|d kr g }nHd}|D ]}|| }q(dd t|D }tdtj||tdtj||g}|d krvg }n tdtj|tdtj|g}tj|d|g |g d	}	t|	S )
Nr  r@   r   r   r   c                 S  s   g | ]}d qS )        r*   )r.   r  r*   r*   r+   r5     s     zHTestShapeInference.prepare_input_initializer_tensors.<locals>.<listcomp>rE   )inputsoutputsr=   r<   )	r   r#   r   r   r   r   r   rK   rT   )
rL   initializer_shapeinput_shaper;   r=   r  dr6  r  rb   r*   r*   r+   !prepare_input_initializer_tensors  s0    
z4TestShapeInference.prepare_input_initializer_tensorsc                 C  s`   d}|  |d }tjj|dd}|jj }|jjj	j
d j|jjj	j
d jf}||ks\td S )Nr  r   Tr  r   r   )r  rU   rV   rW   rb   r<   rS   rh   rm   ro   ru   rw   re   )rL   r  original_modelrY   z_tenorz_shaper*   r*   r+   3test_infer_with_initializer_without_input_above_ir4
  s     zFTestShapeInference.test_infer_with_initializer_without_input_above_ir4c                 C  sj   d}d}|  ||}d|_tjj|dd}|jj }|jj	j
jd j|jj	j
jd jf}|dksftd S )	Nr  r  r   Tr  r   r   r   r   )r  Z
ir_versionrU   rV   rW   rb   r<   rS   rh   rm   ro   ru   rw   re   )rL   r  r  r  rY   r  r  r*   r*   r+   3test_infer_with_initializer_without_input_below_ir4  s       zFTestShapeInference.test_infer_with_initializer_without_input_below_ir4c                 C  s2   d}d}|  ||}| jtjjtjj|dd d S )Nr  r  Tr  r  r   rU   rV   r   rW   rL   r  r  r  r*   r*   r+   %test_infer_initializer_input_mismatch1  s     z8TestShapeInference.test_infer_initializer_input_mismatchc                 C  s(   d}d}|  ||}tjj|dd d S Nr  r  Tr  r  rU   rV   rW   r  r*   r*   r+   1test_infer_initializer_input_consistency_all_none@  s     zDTestShapeInference.test_infer_initializer_input_consistency_all_nonec                 C  s(   d}d}|  ||}tjj|dd d S )Nr  Nr   Tr  r  r  r*   r*   r+   4test_infer_initializer_input_consistency_single_noneI  s     zGTestShapeInference.test_infer_initializer_input_consistency_single_nonec                 C  s2   d}d}|  ||}| jtjjtjj|dd d S )N)r  r   r   r  Tr  r  r  r*   r*   r+   6test_infer_initializer_input_consistency_differnt_rankR  s     zITestShapeInference.test_infer_initializer_input_consistency_differnt_rankc                 C  s,   d}d}|  ||}tjj| dd d S r  )r  rU   rV   rW   ZSerializeToStringr  r*   r*   r+   <test_infer_initializer_input_consistency_all_none_serialized`  s      zOTestShapeInference.test_infer_initializer_input_consistency_all_none_serializedc              	   C  s`   | j dtjdfdtjdfgtdddgdggg tdtjddgd}| |tdtjdg d S )	Nr@   r   rz  r*   Trilur   r   r   r  r   r*   r*   r+   test_trilu_upperm  s    z#TestShapeInference.test_trilu_upperc              	   C  sd   | j dtjdfdtjdfgtdddgdgddgg tdtjdd	gd
}| |tdtjdg d S )Nr@   r   rz  r*   r  r   r   upperr   r   r  r   r*   r*   r+   test_trilu_lowerv  s    z#TestShapeInference.test_trilu_lowerc              	   C  sd   | j dtjdfdtjdfgtdddgdgddgg tdtjdd	gd
}| |tdtjdg d S )Nr@   )r   r3   rz  r*   r  r   r   r  rL  r   )rN   r   rJ   r   r   rj   r   r   r*   r*   r+   test_trilu_upper_zero  s    z(TestShapeInference.test_trilu_upper_zeroc              	   C  sF   |  dtjdfgtddgdgddgg }| |tdtjdg d S )Nr@   )r   r   r3   r  r   r   r  )rN   r   r&  r   rj   r   r   r*   r*   r+   test_trilu_lower_one  s    z'TestShapeInference.test_trilu_lower_onec              
   C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfgtddddddgd	d
dgddgg }| |td	tjdtd
tjdtdtjdg d S Nr@   r  r  r"  r   
input_mean	input_varr  r   output_mean
output_varr   Ztraining_moder   r   r*   r*   r+   test_batch_norm_train  s.    




z(TestShapeInference.test_batch_norm_trainc              
   C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfgtddddddgd	d
dgddgg }| |td	tjdtd
tjdtdtjdg d S )Nr@   )r   r  r3   r   r   r  r  r   r  r  r  r   r  r  r   r  r   r   r*   r*   r+   test_batch_norm_train_dim_param  s.    




z2TestShapeInference.test_batch_norm_train_dim_paramc              
   C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfgtddddddgd	d
dgddgg }| |td	tjdtd
tjdtdtjdg d S r  )rN   r   r   r   r   rj   r   r   r*   r*   r+   $test_batch_norm_train_with_diff_type  s.    




z7TestShapeInference.test_batch_norm_train_with_diff_typec              
   C  sv   |  dtjdfdtjdfdtjdfdtjdfdtjdfgtddddddgd	gd
dgg }| |td	tjdg d S )Nr@   r  r  r"  r   r  r  r  r   r   r  r   r   r*   r*   r+   test_batch_norm_test  s"    




z'TestShapeInference.test_batch_norm_testc              
   C  sv   |  dtjdfdtjdfdtjdfdtjdfdtjdfgtd	dddddgd
gddgg }| |td
tjdg d S )Nr@   )r   r   NNNr  r"  r   r  rC   r  r  r   r   r  r   r   r*   r*   r+   test_batch_norm_test_no_dim  s"    




z.TestShapeInference.test_batch_norm_test_no_dimc              
   C  s   |  dtjd fdtjd fdtjd fdtjdfdtjdfgtddddddgdd	d
gddgg }| |tdtjd td	tjdtd
tjdg d S )Nr@   r  r   r  r  r  r  r   Zrunning_meanZrunning_varr   r  r   r   r*   r*   r+   test_batch_norm_train_no_shape  s.    




z1TestShapeInference.test_batch_norm_train_no_shapec                 C  sB   |  dtjdfgtddgdggg }| |tdtjdg d S )Nr@   rC   NonZeror   )r   Nr  r   r*   r*   r+   test_nonzero*  s    zTestShapeInference.test_nonzeroc                 C  sB   |  dtjd fgtddgdggg }| |tdtjdg d S )Nr@   r  r   r  r  r   r*   r*   r+   test_nonzero_no_shape2  s      z(TestShapeInference.test_nonzero_no_shapec                 C  sN   |  dtjdfgtddgdggtdtjdg}| |tdtjdg d S )Nr@   r   r  r   )NNZ)r   r  )rN   r   r   r   r   rJ   rj   r   r*   r*   r+   test_nonzero_existing_dim_param8  s    z2TestShapeInference.test_nonzero_existing_dim_paramc                 C  sB   |  dtjdfgtddgdggg }| |tdtjdg d S )Nr@   r*   r  r   )r   Nr  r   r*   r*   r+   test_nonzero_scalar@  s      z&TestShapeInference.test_nonzero_scalarc              	   C  s^   t jtjdddgd}t |}t jd|d}| g tdg dg|dgg }| ||g d S )	Nr   rB   r   rS  r   r&   Z
type_protor  rh   	r   r  r   r   r  r  rN   r   rj   rL   r  r  optional_val_inforb   r*   r*   r+   $test_optional_construct_empty_tensorF  s     
   z7TestShapeInference.test_optional_construct_empty_tensorc              	   C  sh   t jtjdddgd}t |}t |}t jd|d}| g tdg dg|dgg }| 	||g d S )	Nr   rB   r   rS  r  r  r  r  )
r   r  r   r&  r  r  r  rN   r   rj   )rL   r  r  r  r  rb   r*   r*   r+   &test_optional_construct_empty_sequenceS  s      

 z9TestShapeInference.test_optional_construct_empty_sequencec                 C  sf   t jtjdddgd}t |}t jd|d}| dtjdfgtd	dgdggg }| ||g d S )
NrB   r   r   rS  r   r  r  r   r  r  r  r*   r*   r+   test_optional_construct_tensorc  s     
 z1TestShapeInference.test_optional_construct_tensorc                 C  s   t jtjdddgd}t |}t jd|d}t |}t jd|d}| dtjd	fgtd
dgdgtddgdggg }| 	|||g d S )NrB   r   r   rS  Zinput_sequencer  r  r  )rB   r   r   r	  r  )
r   r  r   rJ   r  r  r  rN   r   rj   rL   r  r  Zsequence_val_infor  r  rb   r*   r*   r+    test_optional_construct_sequencer  s,     
 
 z3TestShapeInference.test_optional_construct_sequencec                 C  s   t jtjdddgd}t |}t jd|d}| dtjdfgtd	dgdgtd
dgdggg }| ||t	dtj
dg d S )NrB   r   r   rS  r"  r  r  r   r  OptionalHasElementr   r*   )r   r  r   r   r  r  rN   r   rj   r   r  r  r*   r*   r+    test_optional_tensor_has_element  s(     
 z3TestShapeInference.test_optional_tensor_has_elementc              	   C  s   t jtjdddgd}t |}t jd|d}t |}t jd|d}| dtjd	fgtd
dgdgtddgdgtddgdggg }| 	|||t
dtjdg d S )Nr   r   r   rS  r"  r  optionalr  )r   r   r   r	  r  r  r   r*   )r   r  r   r   r  r  r  rN   r   rj   r   r  r  r*   r*   r+   "test_optional_sequence_has_element  s:     
 
 	z5TestShapeInference.test_optional_sequence_has_elementc                 C  s\   t jtjdddgd}t jd|d}| dtjdfgtd	dgdggg }| ||g d S )
NrB   r   r   rS  r   r  r   rB   r   r   OptionalGetElement)r   r  r   r  r  rN   r   rj   )rL   r  Zoutput_tensor_val_inforb   r*   r*   r+   test_tensor_get_element  s      z*TestShapeInference.test_tensor_get_elementStringSplitc                 C  sj   t dtjd}t dtjd}| dtjdfgtddgddgg||g}| j|||gtt	|gd d S )N
substrings)rB   Nlengthr   r@   r  r   
r   r   r   rJ   rN   r   rj   r   r   r   rL   r   r)   r  r  rb   r*   r*   r+   test_string_split_basic  s"    
z*TestShapeInference.test_string_split_basicc                 C  sj   t dtjd}t dtjd}| dtjdfgtddgddgg||g}| j|||gtt	|gd d S )Nr  )r  Nr  )r  r@   r  r   r  r  r*   r*   r+   test_string_split_symbolic  s"    
z-TestShapeInference.test_string_split_symbolicc              	   C  sn   t dtjd}t dtjd}| dtjdfgtddgddgddg||g}| j|||gtt	|gd	 d S )
Nr  )rB   r   r   Nr  r   r@   r  rB   maxsplitr   r  r  r*   r*   r+   test_string_split_nested  s"      
z+TestShapeInference.test_string_split_nestedc              	   C  sn   t dtjd}t dtjd}| dtjdfgtddgddgddg||g}| j|||gtt	|gd	 d S )
Nr  rC   r  r*   r@   r  rB   r  r   r  r  r*   r*   r+   (test_string_split_zero_dimensional_input   s    
z;TestShapeInference.test_string_split_zero_dimensional_inputc              	   C  sn   t dtjd}t dtjd}| dtjdfgtddgddgddg||g}| j|||gtt	|gd	 d S )
Nr  )r  r   r   Nr  )r  r   r   r@   r  rB   r  r   r  r  r*   r*   r+   test_string_split_empty_input   s"      
z0TestShapeInference.test_string_split_empty_inputc                 C  s   t jtjdddgd}t jd|d}t |}t jd|d}| dtjd	fgtd
dgdgtddgdggg }| |||g d S )NrB   r   r   rS  r   r  r  r  r  r  r  )	r   r  r   r  r  r  rN   r   rj   )rL   r  Ztensor_val_intor  r  rb   r*   r*   r+    test_optional_tensor_get_element.   s*      
 z3TestShapeInference.test_optional_tensor_get_elementc              	   C  s   t jtjdddgd}t |}t jd|d}t |}t jd|d}t jd|d}| d	tjd
fgtdd	gdgtddgdgtddgdggg }| 	||||g d S )NrB   r   r   rS  r"  r  r  r   r  )rB   r   r   r	  r  r  )
r   r  r   r&  r  r  r  rN   r   rj   )rL   r  r  Zsequence_val_intor  r  Zoutput_val_intorb   r*   r*   r+   "test_optional_sequence_get_elementC   s6     
 
  	z5TestShapeInference.test_optional_sequence_get_elementc                 C  sZ   |  dtjdfdtjdfdtjdfgtddddgdggg }| |tdtjdg d S )NrD  r  r@   r   ZWherer   )rN   r   r  BFLOAT16r   rj   r   r   r*   r*   r+   test_where_bfloat]   s    


	z$TestShapeInference.test_where_bfloatc                 C  s   t jt jdg t jdtjd dgtddgdggtjt	j
ddgt	jddd	gd
d}| jtjjtjj|dd tj|}| |jjd jjd d S )NZgraph_with_unsupported_typer   ro   ru  r@   r   r   r3  r>   r&   r  r  r;   r=   rb   Tr  r   ro   )r   rT   rK   r   r   r   r   r   
from_arrayr   r8  Zint32r   rU   rV   r   rW   assertFalserb   r   rh   rm   rt   )rL   modelrY   r*   r*   r+   ,test_parse_data_with_unsupported_tensor_typei   s*    z?TestShapeInference.test_parse_data_with_unsupported_tensor_typec                 C  s  t jt jdg t jdtjd dgtddgdggtjt	j
ddgt	jddd	gd
d}tj|jjd _| jtjjtjj|dd tj|}| |jjd jjd | jdtjdfdtjdfgtdddgdgddgg tdtjddgd}| |tdtjdg d S )NZgraph_with_undefined_typer   r
  ru  r@   r   r   r3  r>   r  r  r   Tr  ro   r  r   rD   r   r  r  r   )r   rT   rK   r   r   r   r   r   r  r   r8  int64rH   rb   r=   Z	data_typer   rU   rV   r   rW   r  r   rh   rm   rt   rN   r   rJ   r   rj   )rL   r  rY   rb   r*   r*   r+   *test_parse_data_with_undefined_tensor_type   s@     z=TestShapeInference.test_parse_data_with_undefined_tensor_typec                 C  s   d\}}}}| j dtj|ddffdtjdfgtdddgdgd	d
gg tdtjd||||fgd}| |tdtj|||dfg d S )NrI  thetarB   r   r  r"  
AffineGridgridr   )align_cornersr   r  )rL   r   r  r  r  rb   r*   r*   r+   test_affinegrid_2d   s&    
 z%TestShapeInference.test_affinegrid_2dc                 C  s   d\}}}}}| j dtj|ddffdtjdfgtdddgdggg tdtjd|||||fgd	}| |tdtj||||dfg d S )
N)rB   r   r   r3   r   r  r   r   r  rL  r  r  r   r  )rL   r   r  Dr  r  rb   r*   r*   r+   test_affinegrid_3d   s$    
 z%TestShapeInference.test_affinegrid_3dc                 C  sV   |  dtjdfdtjdfgtdddgdgddd	d
gg }| |tdtjdg d S )Nr@   r  r  )r   r   r   rB   
GridSampler   nearestborderr   r\  padding_moder  r  r   r*   r*   r+   test_gridsample_2d   s&    


 z%TestShapeInference.test_gridsample_2dc                 C  sV   |  dtjdfdtjdfgtdddgdgddd	d
gg }| |tdtjdg d S )Nr@   )r   r   r   r   r   r  )r   r   rB   r   r   r  r   r  r  r   r  )r   r   r   rB   r   r  r   r*   r*   r+   test_gridsample_3d   s&    


 z%TestShapeInference.test_gridsample_3dc                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )Nr@   r  r  )r   H_outW_outrB   r  r   )r   r  r!  r"  r   r   r*   r*   r+   test_gridsample_2d_defaults!  s     

  z.TestShapeInference.test_gridsample_2d_defaultsc                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )Nr@   )r   r  r  r  r  r  )r   D_outr!  r"  r   r  r   )r   r  r$  r!  r"  r   r   r*   r*   r+   test_gridsample_3d_defaults!  s     

  z.TestShapeInference.test_gridsample_3d_defaultsc              
   C  sT   |  dtjdfdtjdfgtdddgdgddd	gg }| |tdtjdg d S )
Nr@   )r   r  NNr  )r   NNrB   r  r   linearr  r\  r  r   r   r*   r*   r+   test_gridsample_2d_no_dim'!  s$    

	z,TestShapeInference.test_gridsample_2d_no_dimc              
   C  sT   |  dtjdfdtjdfgtdddgdgddd	gg }| |tdtjdg d S )
Nr@   )r   r  NNNr  )r   NNNr   r  r   r&  r  r'  r   r   r*   r*   r+   test_gridsample_3d_no_dim=!  s.    

	  z,TestShapeInference.test_gridsample_3d_no_dimc              
   C  s   t dtjdg}t dtjdg}ttddgdggd||}| dtjdfdtjdfdtjdfgtd	dddgd
gtdd
gdg|dgg }| |td
tjdtdtjdg d S )Nr   )   r*  r   r   r  
body_graphr  r  r  r	  r
  SequenceMapout_sequencero  	r   r   r   r   rK   r   rN   rj   r   rL   rM   r2  r+  rb   r*   r*   r+   %test_sequence_map_identity_known_dimsW!  sV    


         z8TestShapeInference.test_sequence_map_identity_known_dimsc              
   C  s   t dtjdg}t dtjdg}ttddgdggd||}| dtjdfdtjd	fd
tjdfgtdddd
gdgtddgdg|dgg }| |tdtjdtdtjdg d S )Nr   r  r  r   r   r  r+  r  )r  rX  r   r  )rS  r  r   r  )r3   r   r   r	  r
  r,  r-  ro  NNr   r.  r/  r*   r*   r+   'test_sequence_map_identity_unknown_dims!  sV    


         z:TestShapeInference.test_sequence_map_identity_unknown_dimsc                 C  sB  t jtddddddgdgtdddd	ddgd
ggdtj dtjjdgtj dtjjdtj d
tjjdgtdtjddtdtjddtdtjddtdtjddtd	tjddgd}| 	dtjdfdtjdfdtjdfgtddddgdgtddgddg|d gg }| 
|tdtjd!tdtjdtdtjdg d S )"Nr  r@   starts1ends1rS  rN  y1starts2ends2y2r+  r1  )r   rK  r   )r   (   r   r   r  r  r   rK  r   r:  r;   r&   r  r  r=   r  r*  i6  r   r  n      r   r  Z   r@  r   r	  r
  r,  out_sequence1out_sequence2ro  r2  r   rK   r   rU   r   r   r   r   rJ   rN   rj   r   rL   r+  rb   r*   r*   r+   'test_sequence_map_slice_outs_known_dims!  s          	


        z:TestShapeInference.test_sequence_map_slice_outs_known_dimsc                 C  sB  t jtddddddgdgtdddd	ddgd
ggdtj dtjjdgtj dtjjdtj d
tjjdgtdtjddtdtjddtdtjddtdtjddtd	tjddgd}| 	dtjdfdtjdfdtjdfgtddddgdgtddgddg|d gg }| 
|tdtjd!tdtjd!tdtjd!g d S )"Nr  r@   r4  r5  rS  rN  r6  r7  r8  r9  r+  r1  )rJ  ZW1r   )rK  ZW2r   r   r  r  r;  r<  r=  r  r>  r  r?  r  rB  r	  r
  r,  rD  rE  ro  r2  rF  rG  r*   r*   r+   )test_sequence_map_slice_outs_unknown_dims!  s          	


        z<TestShapeInference.test_sequence_map_slice_outs_unknown_dimsc              
   C  s   t jtddgdggdtj dtjjdgtj dtjjdgd}| dtjd	fd
tjdfdtjdfgtddd
dgdgtddgdg|dgg }| 	|t
dtjdt
dtjdg d S )Nrn  r@   ro   r+  )r  r  r  r   )r;   r&   r  r  r  r>  r  r?  r  rB  r	  r
  r,  Zshapesro  r2  )r   rK   r   rU   r   r   r   rJ   rN   rj   r   rG  r*   r*   r+   'test_sequence_map_different_tensor_type'"  sP        


    z:TestShapeInference.test_sequence_map_different_tensor_typec                 C  s   |  g tdg dgtdtjdddtddgdggg }| |tdtjdtdtjdg |  g tdg dgtdtjdddtddgdgdd	gg }| |tdtjdtdtjdg d S )
Nr  ro   r*   r  r  ZHammingWindowr   r   ZperiodicrN   r   r   r   rJ   rj   r   r   r   r*   r*   r+   test_hammingwindowO"  sH    		z%TestShapeInference.test_hammingwindowc                 C  s   |  g tdg dgtdtjdddtddgdggg }| |tdtjdtdtjdg |  g tdg dgtdtjdddtddgdgdd	gg }| |tdtjdtdtjdg d S )
Nr  ro   r*   r  r  Z
HannWindowr   r   rK  rL  r   r*   r*   r+   test_hannwindowz"  sH    		z"TestShapeInference.test_hannwindowc                 C  s   |  g tdg dgtdtjdddtddgdggg }| |tdtjdtdtjdg |  g tdg dgtdtjdddtddgdgdd	gg }| |tdtjdtdtjdg d S )
Nr  ro   r*   r  r  ZBlackmanWindowr   r   rK  rL  r   r*   r*   r+   test_blackmanwindow"  sH    		z&TestShapeInference.test_blackmanwindowc           	   
   C  s4   g | ],\\}}\}}}}}}||||||||fqS r*   r*   	r.   r&   r)   Ztest_aspectr  r   onesidedinverseexpected_shaper*   r*   r+   r5   "  s    
zTestShapeInference.<listcomp>DFT))reals_default_axisrB   r3   r   NNNr  )reals_axis_0r   r3   r   r   r   r   r   r   r3   r   rB   )reals_axis_1rX  r   r   r   rY  )reals_axis_2rX  rB   r   r   rY  )reals_axis_negrX  r  r   r   rY  )reals_axis_0_onesidedrX  r   r   r   )rB   r3   r   rB   )reals_axis_1_onesidedrX  r   r   r   )r   r   r   rB   )reals_axis_2_onesidedrX  rB   r   r   r   r3   r   rB   )reals_axis_neg_onesidedrX  r  r   r   r`  )complex_default_axisr  NNNr  )complex_onesidedr  r   r   N)rB   r   rB   )real_inverserV  r   Nr   r  )complex_inverser  r   Nr   r  z
tuple[int]z
int | None)	r   r)   _test_aspectr  r   rQ  rR  rS  r    c	                 C  sP  i }	|d k	r||	d< |d k	r$||	d< |dk rZ|d k	r<||	d< t dddgdgf|	g}
g }n||dksft|d k	rt d	g dgtdtjd
|fdt ddddgdgf|	g}
tdtjd
g}nt ddddgdgf|	g}
g }| g t d	g dgtdtj|tj	|tj
d df|
g }| j|tdtj|f|tdtj|ftt|gd d S )NrQ  rR  rK  r   rT  r   rN  r   r  r*   r  r3  r   )r   re   r   r   rJ   r   rN   r   r   onesfloat32flattenrj   r   r   r   )rL   r   r)   rf  r  r   rQ  rR  rS  
attributesr;   value_infosrb   r*   r*   r+   test_dft"  sf    3	zTestShapeInference.test_dftc           	   
   C  s4   g | ],\\}}\}}}}}}||||||||fqS r*   r*   rP  r*   r*   r+   r5   ?#  s    
))rU  rV  NNNrB   r  rB   )rW  rX  r   r   r   )r  r3   r   rB   )rZ  rX  r   r   r   )r   r  r   rB   )r[  rX  rB   r   r   r   r3   r  rB   )r\  rX  r  r   r   rn  )r]  rX  r   r   r   )   r3   r   rB   )r^  rX  r   r   r   )r   ro  r   rB   )r_  rX  rB   r   r   r   r3   ro  rB   )ra  rX  r  r   r   rp  )rb  r  NNNrm  )rc  r  r   r   N)rB   ro  rB   )rd  rV  r   Nr   rm  )re  r  r   Nr   rm  c	                 C  s  i }	|d k	r||	d< |d k	r$||	d< d}
|dk r|d k	r@||	d< t dg dgtdtjd|
fd	t d
ddgdgf|	g}tdtjdg}n|dkst|d k	rt dg dgtdtjd|fd	t dg dgtdtjd|
fd	t d
dddgdgf|	g}tdtjdtdtjdg}nHt dg dgtdtjd|
fd	t d
dddgdgf|	g}tdtjdg}| g t dg dgtdtj|tj	|tj
d d	f|g }| j|tdtj|f|tdtj|ftt|gd d S )NrQ  rR  r  rK  r   r  
dft_lengthr*   r  rT  r   r   rN  r3  r   )r   r   r   rJ   r   re   rN   r   r   rg  rh  ri  rj   r   r   r   )rL   r   r)   rf  r  r   rQ  rR  rS  rj  rq  r;   rk  rb   r*   r*   r+   test_dft_dft_length>#  s    3   
      z&TestShapeInference.test_dft_dft_length)rg  r   )Zlast_negativer!   )Zout_of_ranger   )Zout_of_range_negativer{  )r   r   r    c                 C  s   |  g tdg dgtdtjdtjdtjd dtdddgdgd	|d
gg }| 	t
jj8 | j|tdtjdtdtjdgttdgd W 5 Q R X d S )Nr  r   rB   r3   r3   rB   r3  r  rT  rN  r   r   )rQ  r   rB   r   r3   rB   r  r   )rN   r   r   r   r   r   rg  rh  ri  r   rU   rV   r   rj   r   r   r   r   rL   r   r   rb   r*   r*   r+   test_dft_invalid_axis_opset17#  s2    	z0TestShapeInference.test_dft_invalid_axis_opset17c                 C  s   |  g tdg dgtdtjdtjdtjd dtdg dgtdtj	d|fdtddd	dgd
ggg }| 
tjjD | j|tdtjdtdtj	dtd
tjdgttdgd W 5 Q R X d S )Nr  r   rs  r3  r  r   r*   rT  rN  r   rt  rK  r   )rN   r   r   r   r   r   rg  rh  ri  rJ   r   rU   rV   r   rj   r   r   r   r   ru  r*   r*   r+   test_dft_invalid_axis_opset20#  s@    	z0TestShapeInference.test_dft_invalid_axis_opset20)real)rB   r3   r3   r   )complexrs  ztuple[int, ...])r   ro   r    c                 C  s   |  dtjdfgtdg dgtdtj|tj|tjd	 dtddddgd	ggg }| j
|tdtj|td	tjd
gttdgd d S )Nr   r*   r  r   r3  r  rT  rN  r   rs  rK  r   rN   r   rJ   r   r   r   r   rg  rh  ri  rj   r   r   r   r   rL   r   ro   rb   r*   r*   r+   test_dft_dynamic_axis_opset20$  s0    z0TestShapeInference.test_dft_dynamic_axis_opset20c                 C  s   |  dtjdfgtdg dgtdtj|tj|tjd	 dtdg dgtdtjdtj
dgtjddtd	dddgd
gddgg }| j|tdtj|tdtjdtd
tjdgttdgd d S )Nr   r*   r  r   r3  r  rq  r  rT  r   r   rQ  NNNrB   rK  r   )rN   r   rJ   r   r   r   r   rg  rh  ri  r8  r  rj   r   r   r   r   r{  r*   r*   r+   1test_dft_dynamic_axis_onesided_dft_length_opset20@$  sZ    	     zDTestShapeInference.test_dft_dynamic_axis_onesided_dft_length_opset20c                 C  s   |  dtjdfgtdg dgtdtj|tj|tjd	 dtddddgd	gd
dgg }| j
|tdtj|td	tjdgttdgd d S )Nr   r*   r  r   r3  r  rT  rN  r   r   r}  r~  rK  r   rz  r{  r*   r*   r+   &test_dft_dynamic_axis_onesided_opset20t$  s8    	  z9TestShapeInference.test_dft_dynamic_axis_onesided_opset20c                 C  s   |  g tdg dgtdtjdtjdtjd dtdddgdgd	d
gg }| j	|t
dtjdt
dtjdgttdgd d S )Nr  r   rs  r3  r  rT  rN  r   r   r}  rt  r  r   rN   r   r   r   r   r   rg  rh  ri  rj   r   r   r   r   r   r*   r*   r+   &test_dft_onesided_default_axis_opset17$  s0    z9TestShapeInference.test_dft_onesided_default_axis_opset17c                 C  s   |  g tdg dgtdtjdtjdtjd dtddddgdgd	d
gg }| j	|t
dtjdt
dtjdgttdgd d S )Nr  r   rs  r3  r  rT  rN  r   r   r}  )rB   r3   r   rB   rK  r   r  r   r*   r*   r+   &test_dft_onesided_default_axis_opset20$  s0    z9TestShapeInference.test_dft_onesided_default_axis_opset20c                 C  s>  |  g tdg dgtdtjdddtdg dgtdtjdddtdg d	gtd	tjd
ddtdddd	gdggg }| |tdtjdtdtjdtd	tjd
tdtjdg |  g tdg dgtdtjdddtdg dgtdtjdddtdg d	gtd	tjd
ddtdg dgtdtjdd
dtdddd	gdggg }| |tdtjdtdtjdtd	tjd
tdtjdtdtjdg |  g tdg dgtdtjdddtdg dgtdtjdddtdg dgtdtjdd
dtdddddgdggg }| |tdtjdtdtjdtdtjdtdtjdg d S )Nr  signal)rB   r   r   )r   r   r   r   r   r   r   r   r   r   rB   rB   rB   rB   rB   r   r   r   r   r   r  Z
frame_stepr*   r   ZwindowrL  r   ZSTFTr   rt  Zframe_lengthrN  )rN   r   r   r   r   rJ   rj   r   r   r*   r*   r+   test_stft_reals$  s      !
   "' 
 !z"TestShapeInference.test_stft_realsc                 C  s  |  g tdg dgtdtjdddtdg dgtdtjdddtdg dgtdtjdddtdg d	gtd	tjdd
dtdg dgtdtjdddtddddd	dgdggg }| |tdtjdtdtjdtdtjdtd	tjdtdtjdtdtjdg d S )Nr  num_mel_binsr*   r  r  rq  r  sample_ratelower_edge_hertzg      $@upper_edge_hertzg      Y@MelWeightMatrixr   r  r   )rN   r   r   r   rJ   r   rj   r   r   r*   r*   r+   test_melweightmatrix]%  s          /3z'TestShapeInference.test_melweightmatrixc                 C  s  |  g tdg dgtdtjdddtdg dgtdtjdddtdg dgtdtjdddtdg d	gtd	tjdd
dtdg dgtdtjdddtddddd	dgdgtjdgg }| |tdtjdtdtjdtdtjdtd	tjdtdtjdtdtjdg d S )Nr  r  r*   r  r  rq  r  r  r  r  r  r  r  r   )Zoutput_datatyper  )	rN   r   r   r   rJ   r   r  rj   r   r   r*   r*   r+   )test_melweightmatrix_with_output_datatype%  s          04z<TestShapeInference.test_melweightmatrix_with_output_datatypec              	   C  sv   | j dtjdfdtjdfgtdddgdgddgd	gg tdtjdd
gd}| j|tdtjdgt	t
dgd d S )N
input_data)rK  r   r   ro   r   CenterCropPadr   r   r   rR  r   r  r   r   r  r   rP  r   r   r   r*   r*   r+   test_center_crop_pad_hwc_crop%  s    

	z0TestShapeInference.test_center_crop_pad_hwc_cropc              	   C  sv   | j dtjdfdtjdfgtdddgdgddgd	gg tdtjdd
gd}| j|tdtjdgt	t
dgd d S )Nr  )r   rK  r   ro   r   r  r   r   rB   rR  r  r   )r   r   r  rP  r   r   r   r*   r*   r+   test_center_crop_pad_chw_crop%  s    

	z0TestShapeInference.test_center_crop_pad_chw_cropc              	   C  sv   | j dtjdfdtjdfgtdddgdgddgd	gg tdtjdd
gd}| j|tdtjdgt	t
dgd d S )Nr  )r   r   r   ro   r   r  r   r   r   rR  rK  r  r   )rK  r  r   rP  r   r   r   r*   r*   r+    test_center_crop_pad_hwc_croppad%  s    

	z3TestShapeInference.test_center_crop_pad_hwc_croppadc              	   C  sv   | j dtjdfdtjdfgtdddgdgddgd	gg tdtjdd
gd}| j|tdtjdgt	t
dgd d S )Nr  )r   r   r   ro   r   r  r   r   rB   rR  r  r   )r   rK  r  rP  r   r   r   r*   r*   r+    test_center_crop_pad_chw_croppad&  s    

	z3TestShapeInference.test_center_crop_pad_chw_croppadc                 C  s\   |  dtjdfdtjdfgtdddgdggg }| j|tdtjd gtt	dgd d S )	Nr  rW  ro   r   r  r   rP  r   r  r   r*   r*   r+   (test_center_crop_pad_without_input_shape&  s    

z;TestShapeInference.test_center_crop_pad_without_input_shapec              	   C  sv   | j dtjdfdtjdfgtdddgdgddgd	gg tdtjdd
gd}| j|tdtjdgt	t
dgd d S )Nr  )rK  r  r   ro   r   r  r   r   r   rR  r  r   r  rP  r   r   r   r*   r*   r+   ;test_center_crop_pad_with_input_shape_containing_dim_params-&  s    

	zNTestShapeInference.test_center_crop_pad_with_input_shape_containing_dim_paramsc                 C  s   t ddgdgtd}| dtjdfg|gg }| j|tdtjdgttdtt	dgd | dtjd	fg|gg }| j|tdtjd	gttdtt	dgd d S )
NZCategoryMapperr@   r   r4   r   r   rJ  r   )r   r3   r   )
r   r   rN   r   rJ   rj   r   r   r   r   )rL   catZ	graph_intZ	graph_strr*   r*   r+   test_category_mapper?&  s<    z'TestShapeInference.test_category_mapperc                 C  s`   t ddgdgtdd}| dtjdfg|gg }| j|tdtjdgttdtt	d	gd
 d S )NZTreeEnsembleRegressorr@   r   r3   )r'   	n_targetsr   r   r   r3   r   rJ  r   )
r   r   rN   r   r  rj   r   r   r   r   rL   treerb   r*   r*   r+   test_tree_ensemble_regressorb&  s&    z/TestShapeInference.test_tree_ensemble_regressorc                 C  s   d}d}t ddgdgtddg| td||ftt|tdtj|fdg| dg| dg| dg| dg| td	|d
dddtjdddgdg| td||fdg| dgd}| 	d|dfg|gg }| j
|td|dgttdttdgd d S )Nr3   r   TreeEnsembler@   r   r   nodes_splitsnodes_modesmembership_values)r   r  r  r  r  r  r  leaf_weightsr   )r'   r  nodes_featureidsr  r  nodes_truenodeidsnodes_falsenodeidsnodes_trueleafsnodes_falseleafsr  leaf_targetidsr  
tree_roots
Batch SizeZFeatures)r  r3   rJ  r   )r   r   r   rc   r#   r   r   r   nanrN   rj   r   r   r   )rL   r4  interior_nodesleavesr  rb   r*   r*   r+   test_tree_ensembley&  s^    
"
z%TestShapeInference.test_tree_ensembler   r   r  )r   r   r   r  rL  r3   )r  r  r  )rP  rP  c                 C  s   d}d}t ddgdgtddg| |tdtj|fdg| |dg| dg| dg| dg| |dgd}| dtjd	fg|gg }| tj	j
| j| d S )
Nr3   r   r  r@   r   r   r  )r'   r  r  r  r  r  r  r  r  r  r  r  r  )r   r   r   r   r   rN   r  r   rU   rV   r   rZ   )rL   r  r  r  r  r  r  rb   r*   r*   r+   .test_tree_ensemble_fails_if_invalid_attributes&  s<    /zATestShapeInference.test_tree_ensemble_fails_if_invalid_attributesc              	   C  sx   t ddgddgddddd	gtd
}| dtjdfg|gg }| j|tdtjdtdtjdgt	tdt	t
dgd d S )NZTreeEnsembleClassifierr@   r   r   r   r   rB   r   r   )classlabels_int64sr'   r  )r   r  rJ  r   )r   r   rN   r   r  rj   r   rJ   r   r   r   r  r*   r*   r+   test_tree_ensemble_classifier&  s*    z0TestShapeInference.test_tree_ensemble_classifierc              	   C  s~   t dddgdgtd}dD ]^\}}| dtjdfdtj|fg|gg }| j|tdtjdd	|fgttdttd
gd qd S )NZArrayFeatureExtractorr@   r   r   r4   ))r   rB   )r*   rG  )r   r   r   r   r   rP  r   	r   r   rN   r   rJ   rj   r   r   r   )rL   nodeZ
axes_shapeexpectedrb   r*   r*   r+   test_array_feature_extractor'  s*    

z/TestShapeInference.test_array_feature_extractorc                 C  s^   t ddgdgtd}| dtjdfg|gg }| j|tdtjdgttdttdgd d S )	NZ	Binarizerr@   r   r4   r   r   rP  r   r  )rL   r  rb   r*   r*   r+   test_binarizer6'  s&    
z!TestShapeInference.test_binarizerc                 C  sd   |  dtjdfgtddgdgddddgd	d
gg }| j|tdtjdgttdtt	dgd d S )Nr   )rB   r   r   ZOneHotEncoderr   r   rB   r   r   
ai.onnx.ml)Zcats_int64sr'   rB   r   r   r   rP  r   )
rN   r   rJ   r   rj   r   r   r   r   r   r   r*   r*   r+   test_one_hot_encoderN'  s&    
	z'TestShapeInference.test_one_hot_encoderc              
   C  sd   ddddgit jjfddddgit jjff}|D ].\}}| j||d	 | || W 5 Q R X q0d S )
Nr  r   rB   r   Zclasslabels_stringsr   r   c)attrsr6  )rU   r   rJ   r   ZsubTestzip_map_test_case)rL   paramsr  r6  r*   r*   r+   test_zip_mapf'  s    zTestShapeInference.test_zip_mapc                 C  s   |  dtjdfgtddgdgf|ddigg }tj|tjtjd}| j|tj	dtj
|gttdttd	gd
 d S )Nr   )r   r   ZZipMapr   r'   r  r*   r   rP  r   )rN   r   r   r   rU   r   Zmake_map_type_protor  rj   r  r  r   r   r   )rL   r  r6  rb   typr*   r*   r+   r  p'  s:    	  
z$TestShapeInference.zip_map_test_casec                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )Nr   r  r|   rC   Compressr   rN   r   rJ   r  r   rj   r   r   r*   r*   r+   test_compress_without_axis'  s    

z-TestShapeInference.test_compress_without_axisc              	   C  sR   |  dtjdfdtjdfgtdddgdgddgg }| |tdtjd	g d S )
Nr   r  r|   rC   r  r   r!   r   )rB   r   r   Nr  r   r*   r*   r+   test_compress_with_axis'  s    

z*TestShapeInference.test_compress_with_axisc              	   C  sr   d}t j|}tjdddg g d}t j| | t jj t j	|d W 5 Q R X t j
|j|j|j d S )Nz
            <
                ir_version: 7,
                opset_import: ["" : 1]
            >
            agraph (X, Y) => (Z)
            {
                Z = CustomOp(X, Y)
            }
           ZCustomOprN  r   )r  r  T)rU   parserparse_modelr   r   Zregister_schemar   rV   r   rW   Zderegister_schemar&   r$   r'   )rL   r   r  Z	op_schemar*   r*   r+   (test_check_type_when_schema_has_empty_io'  s"    
  z;TestShapeInference.test_check_type_when_schema_has_empty_ioc              	   C  sJ   d}t j|}| t jj" t jj|dd t j| W 5 Q R X d S )Na  
        <
        ir_version: 10,
        opset_import: ["" : 17]
        >
        graph (float in0, float[2,7,8,1,3] in1, float[3,7] in2) => () {
        out0, out1, out2 = LayerNormalization <epsilon: float = -841.058, stash_type: int = -940> (in0, in1, in2)
        }
        TZ
full_check	rU   r  r  r   rV   r   r   rX   rW   rL   Zmodeltxtr  r*   r*   r+   #test_issue_layer_normalization_6187'  s
    	z6TestShapeInference.test_issue_layer_normalization_6187c              	   C  sJ   d}t j|}| t jj" t jj|dd t j| W 5 Q R X d S )Nz
        <
        ir_version: 9,
        opset_import: ["" : 11]
        >
        graph (float[7,6,1,5] in0, float in1, float[7,2,3,2,1] in2) => () {
        out0 = Conv <auto_pad = "NOTSET", group = 1> (in0, in1, in2)
        }
        Tr  r  r  r*   r*   r+   test_issue_conv_6180'  s
    	z'TestShapeInference.test_issue_conv_6180c              	   C  sJ   d}t j|}| t jj" t jj|dd t j| W 5 Q R X d S )Na  
        <
        ir_version: 10,
        opset_import: ["" : 6]
        >
        graph (double[2,1] in0, double in1, double[2] in2) => () {
        out0 = Gemm <alpha: float = 1, beta: float = -693.752, broadcast: int = -436, transB: int = 823> (in0, in1, in2)
        }
        Tr  )	rU   r  r  r   r   r*  rX   rV   rW   r  r*   r*   r+   test_issue_gemm_6185'  s
    	z'TestShapeInference.test_issue_gemm_6185c              	   C  sJ   d}t j|}| t jj" t jj|dd t j| W 5 Q R X d S )Nz
        <
        ir_version: 10,
        opset_import: ["" : 17]
        >
        graph (float16[3] in0, int32[2] in1, float16[7,8,8,8] in2, int32[8,1,7,2] in3) => () {
        out0 = STFT (in0, in1, in2, in3)
        }
        Tr  r  r  r*   r*   r+   test_issue_stft_6186'  s
    	z'TestShapeInference.test_issue_stft_6186N)rs  (  r   r   r   r   r   r   expandr8   r   r   r   r   r   r   r   r   r   r   r   r   unittestr{   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r	  r  r  r  r  r  r.  r:  r?  r@  rC  rF  rH  rO  rV  rX  r^  ra  rc  rd  rg  rh  ri  rj  rl  rm  rp  ru  ry  rz  r|  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r&  r'  r)  r*  r,  r-  r.  r0  r2  r4  r5  r9  r:  r=  r?  r@  rA  rB  rD  rE  rF  rG  rH  rL  rN  rP  rQ  rZ  r[  r]  rk  rn  rp  rr  rq  rt  rv  rw  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r   r!  r3  r4  r8  r:  r;  rI  rK  rM  rQ  rR  rT  rY  rZ  r_  ra  re  rf  rs  rt  rw  ry  rz  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rU   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Z
skipUnlessr   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r"  r#  r'  r(  r)  r*  r+  r,  r-  r/  r0  r3  r4  r7  r8  r:  r<  r=  rE  rP  rY  r^  rc  rd  rh  ri  rj  rk  rl  ro  rq  rr  rs  rt  ru  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r	  r  r  r  r  r  r   r#  r%  r(  r)  r0  r3  rH  rI  rJ  rM  rN  rO  	itertoolsproductrl  rr  rv  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*   r*   r*   r+   r      s  
	)/8" 









	$$ 
(,$"





 


















:9;99,*(D6)%####!#($&

&   $ D 		


 %#)'.
















					'))??(+++
'4G
'4h$.  
@A" 4      
      
      
      (&	r   __main__rB   )	verbosity)3
__future__r   r  r  typingr   r   Znumpyr   rz   r   Zonnx.shape_inferencerU   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Z	onnx.defsr   r   r   r   r   Zonnx.helperr   r   r   r   r   r   Zonnx.parserr   r,   Zget_all_schemasr0   __annotations__r8   ZTestCaser9   r   r   mainr*   r*   r*   r+   <module>   s    <                                                                                h
