o
    wi.                    @  sR  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( ersd d	l)m*Z* d ddZ+dd e, D Z-de.d< d!ddZ/G dd dej0Z1G dd de1Z2e3dkrej4dd dS dS )"    )annotationsN)TYPE_CHECKINGAny)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_graph)Sequenceschemar   returnset[int]c              	   C  sR   t  }t| jddD ]}z|t| j|| jj W q
 ty&   Y  |S w |S )Nr   )	setrangesince_versionaddr   
get_schemanamedomainr   )r    versionsversion r-   [/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/test/shape_inference_test.pyget_available_versions4   s   r/   c                 C  s"   i | ]}|j |jtt|fqS r-   )r)   r*   	frozensetr/   ).0r    r-   r-   r.   
<dictcomp>@   s    r2   z%dict[str, tuple[str, frozenset[int]]]ALL_OP_VERSIONSop_namestrlist[tuple[str, int]]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   )r1   r,   r*   r-   r.   
<listcomp>K   s    z$all_versions_for.<locals>.<listcomp>)r3   
ValueErrorsorted)r4   versions_setr+   r-   r8   r.   all_versions_forF   s   
r=   c                   @  s@   e Zd Z	d d!ddZd"ddZd#ddZd$ddZdd ZdS )%TestShapeInferenceHelperNseed_values5Sequence[str | tuple[str, TensorProto.DataType, Any]]nodeslist[NodeProto]
value_infolist[ValueInfoProto]initializerSequence[TensorProto] | Noner!   r   c                 C  s   |d u rg }dd |D }g }|D ]V}t |tr%|d d \}}	t| }
n
|tj}}	t|}
||v r9||
 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     h | ]}|j qS r-   r)   r1   xr-   r-   r.   	<setcomp>a       z7TestShapeInferenceHelper._make_graph.<locals>.<setcomp>   SEED_r-   UNKNOWN_SHAPE_NReshaper   test)rE   rC   )
isinstancetupler   r   	UNDEFINEDr   appendINT64r   r   
make_graph)selfr?   rA   rC   rE   names_in_initializerinput_value_infos
seed_value	seed_name
proto_typeseed_value_infor-   r-   r.   _make_graphX   sF   


z$TestShapeInferenceHelper._make_graphgraph_or_modelGraphProto | ModelProtokwargsr   r   c                 K  sV   | dd}t|trd|d< tj|fi |}n|}tjj|d|d}t	| |S )N	data_propFz	onnx-testproducer_nameT)strict_moderd   )
poprS   r   r   
make_modelonnxshape_inferenceinfer_shapesr   check_model)rY   ra   rc   rd   
orig_modelinferred_modelr-   r-   r.   	_inferred   s   

z"TestShapeInferenceHelper._inferredvisNonec           	        s   t |tr|n|j}dd |D   fdd|jD | }| j|fi |}t|jj}t|dd d}t|dd d}t|t|ksFJ t||D ]\}}| 	|j
|j
 qKd S )	Nc                 S  rG   r-   rH   rI   r-   r-   r.   rK      rL   z<TestShapeInferenceHelper._assert_inferred.<locals>.<setcomp>c                   s   g | ]	}|j  vr|qS r-   rH   rI   names_in_visr-   r.   r9      s    z=TestShapeInferenceHelper._assert_inferred.<locals>.<listcomp>c                 S     | j S rP   rH   rJ   r-   r-   r.   <lambda>       z;TestShapeInferenceHelper._assert_inferred.<locals>.<lambda>)keyc                 S  rt   rP   rH   ru   r-   r-   r.   rv      rw   )rS   r   graphrC   ro   listr;   lenzip_compare_value_infostype)	rY   ra   rp   rc   ry   rn   inferred_visv
inferred_vr-   rr   r.   _assert_inferred   s   z)TestShapeInferenceHelper._assert_inferredvi_typer   inferred_vi_typec                 C  s  | dr| dsJ |j dsJ |j dsJ |jj|jjks&J |j d|j dks4J |j drt|jjjt|jjjksJJ t|jjjD ]3\}}|jjj| }|jrq|j|jkspJ d| d| dqQ|j|jksJ d| d| dqQd S d S | dr| dsJ |j	j}|j	j}| 
|| d S | dr| dsJ |jj}|jj}| 
|| d S | dr| dsJ |jj|jjksJ | 
|jj|jj d S |t kr|t ksJ d S tdt|)	Ntensor_type	elem_typeshape
sequence_typeoptional_typemap_typez6Unrecognized value info type in _compare_value_infos: )HasFieldr   r   r{   r   dim	enumerate	dim_param	dim_valuer   r}   r   r   key_type
value_typeri   r   NotImplementedErrorr5   )rY   r   r   dim_ir   inferred_dimviinferred_vir-   r-   r.   r}      s\   





z-TestShapeInferenceHelper._compare_value_infosc                 C  s   |r	t | d S d S rP   )pytestskip)rY   	conditionreasonr-   r-   r.   skipIf   s   zTestShapeInferenceHelper.skipIfrP   )
r?   r@   rA   rB   rC   rD   rE   rF   r!   r   )ra   rb   rc   r   r!   r   )ra   rb   rp   rD   rc   r   r!   rq   )r   r   r   r   r!   rq   )__name__
__module____qualname__r`   ro   r   r}   r   r-   r-   r-   r.   r>   W   s    
1

3r>   c                   @  s&)  e Zd ZdfddZdgd	d
ZeeddfddZeeddfddZ	eeddfddZ
eeddfddZeeddfddZeeddfddZeeddfddZdhddZeeddfd d!Zdid#d$Zeeddfd%d&Zeed'dfd(d)Zeed'ed*dfd+d,Zeed-dfd.d/Zeed0dfd1d2Zeed0dfd3d4Zeed0dfd5d6Zeed0dfd7d8Zeed0dfd9d:Zeed;dfd<d=Zeed;dfd>d?Zeed;dfd@dAZeed;dfdBdCZ eed;dfdDdEZ!eedFdfdGdHZ"eedFdfdIdJZ#eedFdfdKdLZ$eedFdfdMdNZ%eedFdfdOdPZ&eedFdfdQdRZ'eedFdfdSdTZ(eedFdfdUdVZ)eedWdfdXdYZ*eedWdfdZd[Z+eed\dfd]d^Z,eed\dfd_d`Z-eed\dfdadbZ.eed\dfdcddZ/eed\dfdedfZ0eedgdfdhdiZ1eedjdfdkdlZ2eedgdfdmdnZ3eedgdfdodpZ4eedgdfdqdrZ5eedgdfdsdtZ6eedgdfdudvZ7eedgdfdwdxZ8eedgdfdydzZ9eedgdfd{d|Z:eedgdfd}d~Z;eedgdfddZ<eedgdfddZ=eedgdfddZ>eeddfddZ?eeddfddZ@eeddfddZAeeddfddZBeeddfddZCeeddfddZDeeddfddZEeeddfddZFeeddfddZGeeddfddZHeeddfddZIeeddfddZJeeddfddZKdfddZLeeddfddZMdfddZNeeddfddZOeeddfddZPeeddfddZQeeddfddZReeddfddZSeeddfddZTeeddfddZUeeddfddZVeeddfddZWdfddZXdfddĄZYdfddƄZZdfddȄZ[dfddʄZ\dfdd̄Z]dfdd΄Z^dfddЄZ_dfdd҄Z`dfddԄZadfddքZbdfdd؄ZcdfddڄZddfdd܄ZedfddބZfdfddZgdfddZhdfddZidfddZjdfddZkdfddZldfddZmdfddZndfddZodfddZpdfddZqdfddZrdfddZsdfddZtdfddZudfddZvdfdd ZwdfddZxdfddZydfddZzdfddZ{dfd	d
Z|dfddZ}dfddZ~dfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfdd Zdfd!d"Zdfd#d$Zdfd%d&Zdfd'd(Zdfd)d*Zdfd+d,Zdjd/d0Zdjd1d2Zdfd3d4Zdfd5d6Zdfd7d8Zdfd9d:Zdfd;d<Zdfd=d>Zdfd?d@ZdfdAdBZdfdCdDZdfdEdFZdfdGdHZdfdIdJZdfdKdLZdfdMdNZdfdOdPZdfdQdRZdfdSdTZdkdZd[Zdfd\d]Zdkd^d_Zdfd`daZ	bdldmdddeZdfdfdgZdkdhdiZdfdjdkZdfdldmZdfdndoZdfdpdqZdfdrdsZdfdtduZdfdvdwZdfdxdyZdfdzd{Zdfd|d}Zdfd~dZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZÐdfddZĐdfddZŐdfddZƐdfddZǐdfddZȐdfddZɐdfddZʐdfddZːdfddZ̐dfddZ͐dfddZΐdfddZϐdfddZАdfddZѐdfddZҐdfddZӐdfddÄZԐdfdĐdńZՐdfdƐdǄZ֐dfdȐdɄZאdfdʐd˄Zؐdfd̐d̈́ZِdfdΐdτZڐdfdАdфZېdfdҐdӄZܐdfdԐdՄZݐdfd֐dׄZސdfdؐdلZߐdfdڐdۄZdfdܐd݄Zdfdސd߄ZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfd dZdfddZdfddZdfddZdfdd	Zdfd
dZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZ dfddZdfddZdfd d!Zdfd"d#Zdfd$d%Zdfd&d'Zdfd(d)Zdfd*d+Zdfd,d-Z	dfd.d/Z
dfd0d1Zdfd2d3Zdfd4d5Zdfd6d7Zdfd8d9Zdfd:d;Zdfd<d=Zdfd>d?Zdfd@dAZdfdBdCZdfdDdEZdfdFdGZdfdHdIZdfdJdKZdfdLdMZdfdNdOZdfdPdQZdfdRdSZdfdTdUZdfdVdWZdfdXdYZdfdZd[Z dfd\d]Z!dhd^d_Z"dfd`daZ#didbdcZ$dfdddeZ%dhdfdgZ&dfdhdiZ'ee(j)j*e(j)j+e(j)j,gdfdjdkZ-dfdldmZ.dfdndoZ/dfdpdqZ0dfdrdsZ1dfdtduZ2ed*dfdvdwZ3ee(j)j*e(j)j+e(j)j,gdfdxdyZ4dfdzd{Z5dfd|d}Z6dfd~dZ7dfddZ8dfddZ9dfddZ:dfddZ;dfddZ<e=e>ddfddZ?e=e>ddfddZ@dfddZAdfddZBdfddZCdfddZDdfddZEeje>r{edng dddfddZFeje>redng dddfddZGeje>redng dddfddZHdnddZIdfddZJdfddZKdfddZLdfddZMdfddZNdfddZOdfddZPdfddZQdfddZRdfddZSdfddZTdfddZUdfddZVdfdÐdĄZWdfdŐdƄZXdfdǐdȄZYdfdɐdʄZZdfdːd̄Z[dfd͐d΄Z\dfdϐdЄZ]dfdѐd҄Z^dfdӐdԄZ_dfdՐdքZ`dfdאd؄ZadfdِdڄZbdfdېd܄ZcdfdݐdބZddfdߐdZedfddZfdfddZgdfddZhdfddZidfddZjdfddZkdfddZldfddZmdfddZndfddZodfddZpdfddZqdfddZrdfddZsdfddZtdfdd ZudfddZvdfddZwdfddZxdfddZydfd	d
ZzdfddZ{dfddZ|dfddZ}dfddZ~dfddZdfddZdfddZdfddZdfddZdfddZdfdd Zdfd!d"Zdfd#d$Zdfd%d&Zdfd'd(Zdfd)d*Zdfd+d,Zdfd-d.Zdfd/d0Zdfd1d2Zdfd3d4Zdfd5d6Zdfd7d8Zdfd9d:Zdfd;d<Zdfd=d>Zdfd?d@ZdfdAdBZdfdCdDZdfdEdFZdfdGdHZdfdIdJZdfdKdLZdfdMdNZdfdOdPZdfdQdRZdfdSdTZdfdUdVZdfdWdXZdfdYdZZdfd[d\Zdfd]d^Zdfd_d`ZdfdadbZdfdcddZdfdedfZdfdgdhZdfdidjZdfdkdlZdfdmdnZdfdodpZdfdqdrZdfdsdtZdfdudvZdfdwdxZdfdydzZdfd{d|Zdfd}d~ZdfddZdfddZdfddZdd ZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZdfddZÐdfddZĐdfddZŐdfddZƐdfddZǐdfddZȐdfddZɐdfddZʐdfddZːdfddZ̐dfddZ͐dfddZΐdfddZϐdfddZАdfddZѐdfddZҐdfddZӐdfddZeeddfddZeeddfddÄZeeddfdĐdńZeeddfdƐdǄZeeddfdȐdɄZِdfdʐd˄Zڐdfd̐d̈́ZېdfdΐdτZܐdfdАdфZݐdfdҐdӄZސdfdԐdՄZߐdfd֐dׄZdfdؐdلZdfdڐdۄZdfdܐd݄Zdfdސd߄ZdfddZdf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 doddZedd eeddD doddZeg ddpd	d
Zeg ddpddZeddgdqddZeddgdqddZeddgdqddZdfddZdf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+ Ze=e>ddfd,d-Zeg d.d/d0gfg d.d1fd1g d2fd3ge=e>ddfd4d5Ze=e>ddfd6d7Zee)j*e)je)j+ge=e>ddfd8d9Zed:gd; ed<e)jd=d>gd? ed@e)jdAd>gdB fd:gdB ed<e)j*d=d>gd? ed@e)jdAd>gdB fd:gdB ed<e)jdCd>gdD ed@e)jdAd>gdB fd:gdB ed<e)jd=d>gd? ed@e)j*dAd>gdB fge=e>ddfdEdFZ	e=e>ddfdGdHZ
e=e>ddfdIdJZe=e>ddfdKdLZe=e>ddfdMdNZeg d.g d2fd3ge=e>ddfdOdPZe=e>ddfdQdRZdfdSdTZdfdUdVZdfdWdXZdYdZ Zd[d\ Zd]d^ Zd_d` Zdadb Zeedcddde Zd1S (r  TestShapeInferencer!   rq   c                 C  s(   |  dgg g }| tjj| j| d S )Ny)r`   assertRaisesri   rj   InferenceErrorro   rY   ry   r-   r-   r.   test_empty_graph   s   z#TestShapeInference.test_empty_graphopr5   rc   r   c                 K  sF   |  dtjdfgt|ddfi |gg }| |tdtjdg d S )NrJ         r7   r   r`   r   FLOATr   r   r   )rY   r   rc   ry   r-   r-   r.   _identity_prop      z!TestShapeInference._identity_prop	Transposec              	   C  sX   |  dtjdfgtddgdgg ddgg }| j|tdtjdgtt|gd d S 	NXrM      r   r   Y   r   rM   permr   rM   r   opset_imports	r`   r   r   r   r   r   r   r   r   rY   _r,   ry   r-   r-   r.   test_transpose   s   
z!TestShapeInference.test_transposec              	   C  sd   |  dtjdfgtddgdgg ddgtdtjd g}| j|tdtjdgtt|gd d S r   )	r`   r   r   r   r   r   r   r   r   r   r-   r-   r.   test_transpose_preexisting     
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  sd   |  dtjdfgtddgdgg d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   )r   abr   r   )
r`   r   r   r   r   rU   r   r   r   r   r   r-   r-   r.   test_transpose_partial  r   z)TestShapeInference.test_transpose_partialc              	   G  sR   |  dtjdfgtddgdgg ddgtdtjdg}| tjj| j	| d S )Nr   r   r   r   r   r   )r7   r7   r7   )
r`   r   r   r   r   r   ri   rj   r   ro   rY   r   ry   r-   r-   r.   *test_transpose_preexisting_incorrect_shape)     z=TestShapeInference.test_transpose_preexisting_incorrect_shapec              	   G  sR   |  dtjdfgtddgdgg ddgtdtjdg}| tjj	| j
| d S )Nr   r   r   r   r   r   r   )r`   r   r   r   r   STRINGr   ri   rj   r   ro   r   r-   r-   r.   )test_transpose_preexisting_incorrect_type2  r   z<TestShapeInference.test_transpose_preexisting_incorrect_typec              	   G  sF   |  dtjdfgtddgdgg ddgg }| tjj| j| d S )Nr   r   r   r   )r   r   r   r   	r`   r   r   r   r   ri   rj   r   ro   r   r-   r-   r.   &test_transpose_incorrect_repeated_perm;  s   z9TestShapeInference.test_transpose_incorrect_repeated_permshape1Sequence[int]shape2c                 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 NrJ   r   MatMulzr   )npmatmularangeprodreshaper   r`   r   r   r   r   r   r   r   r   rY   r,   r   r   expected_out_shapery   r-   r-   r.    _make_matmul_test_all_dims_knownD  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rM   r   rM   rM   r   )r7   rM   rM   r   r   rM   rM   r   r   r   rM   r   rM   r   )r   r   rM   r7   r   r   rM   r   r   rM   r   )r   rY   r   r,   r-   r-   r.   test_matmul_all_dims_knownV  s   z-TestShapeInference.test_matmul_all_dims_knownr   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_unknowne  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 NrP   r-   r   r   )rM   r   )r   r   )r   r   )r   N)Nr   r   )r   rM   r7   r   r   r7   )r   r   r   rM   r   r   r   r7   )r   r   r-   r-   r.   test_matmul_allow_unknowns  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 )NrJ   rM   r   r   r   r   tor   )
r`   r   r   r   UINT8r   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 )NrJ   r   r   r   r   )
r`   r   r   r   
COMPLEX128r   ri   rj   r   ro   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 )NrJ   r   tNr   r   r   )
r`   r   r   FLOAT16r   r   r   r   r   r   r   r-   r-   r.   test_cast_like     
z!TestShapeInference.test_cast_likeCol2Imc              
   C     | j dtjdfdtjdfdtjdfgtdg d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   r7   r7   output_shaper   kernel_shaper   r   r   r   outputr7   r7   r   r7   rE   r   r   r7   r7   r   r`   r   r   rW   r   r   r   r   r   r   r   r   r-   r-   r.   test_col2im  &   



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g d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   r  rM   stridesr  r   r   r  r  r   r  r   r-   r-   r.   test_col2im_strides  ,   



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g ddgg d	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   r7      r   r   r   r   r   r  )r   r   r   r   padsr  r  r  r  r   r  r   r-   r-   r.   test_col2im_pads  r  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g d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   r7   r   r   r   r   r   r  r   r7   	dilations   r  rM   rM   r  )r   r   r  r  r   r  r   r-   r-   r.   test_col2im_dilations  r  z(TestShapeInference.test_col2im_dilationsc              
   C  r   )Nr   )r   
      r   r   r   r   r   r  r   r   r7   )r   r   r7   r  r   rM   r   r   r7   r   r  r   r-   r-   r.   test_col2im_5d  r  z!TestShapeInference.test_col2im_5dConcatc              	   C  `   |  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 )NrJ   r   r   )   r   r   r  r   r   axis)r	  r   r   r   r   r   r-   r-   r.   test_concat1     
zTestShapeInference.test_concatc              	   G  sP   |  dtjdfddtjdfgtdg ddgd	d
gg }| tjj| j| d S )NrJ   r   r   r   NNNr  rJ   r   r   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 )
NrJ   rM   rM   rM   r   r  r   rM   r!  )rM   rM   r   r   r   r   r-   r-   r.   test_concat_3d_axis_2K  r$  z(TestShapeInference.test_concat_3d_axis_2c              	   C  r  )NrJ   r   rM   r   )r   r   r  r   r   r!  )r   r7   r   r   r   r-   r-   r.   test_concat_paramX  r$  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 )NrJ   r+  r  r   r   r!  r   r   r   r-   r-   r.   test_concat_param_single_inpute     
z1TestShapeInference.test_concat_param_single_inputrQ   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 14rJ   r   r   r   rQ   r   NNr   )r   r`   r   r   rW   r   r   r   r   r   r   r   r-   r-   r.   %test_reshape_dynamic_shape_known_rankr  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 )NrJ   r   r   MrQ   r   r   
r`   r   r   rW   r   r   r   r   r   r   r   r-   r-   r.   #test_reshape_dynamic_shape_symbolic  r   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 )NrJ   r   r   rQ   r   r   r4  r   r-   r-   r.   "test_reshape_dynamic_unknown_shape  r   z5TestShapeInference.test_reshape_dynamic_unknown_shapec              	   C  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}| j|tdtjdgt	t
|gd	 d S )
NrJ   r   r   r   rQ   r   r      r  r   r`   r   r   rW   r   r   r   r   r   r   r   r   r-   r-   r.   test_reshape_static_shape     
z,TestShapeInference.test_reshape_static_shapec              	   C  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}| j|tdtjd	gt	t
|gd
 d S )NrJ   r   r   r   rQ   r   )r   r   r#   r  r   r   r:  r   r-   r-   r.   "test_reshape_static_shape_inferred  r<  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 )
NrJ   r   r   r   r   r   rQ   r   r   r   r   r  r   r:  r   r-   r-   r.   test_reshape_static_shape_zero  r<  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 14rJ   r   r   r   r   r   rQ   r   r   	allowzeror@  r  r   )r   r`   r   r   rW   r   r   r   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 )NrJ   r   Constantr   r   r8  valuerQ   r   r   )r`   r   r   r   r   rW   r   r   r   r   r   r   r-   r-   r.   "test_reshape_static_shape_constant  s&   	
z5TestShapeInference.test_reshape_static_shape_constantUpsamplec              	     s  dkr0 dtjdfgtddgdgg ddgg  j tdtjdgttgd	 d 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  fdd}dkrc|  d S tjj}|  W d    n1 sxw   Y  |j}dt|v sJ d S )Nr   rJ   rM   r   r   r7   rJ  r         ?皙??ffffff?scalesrM   r   r   r	  r   rR  r   r  c                     *   j  tdtjdgttgd d S Nr   rS  r   r   r   r   INT32r   r   r   r-   ry   rY   r,   r-   r.   call_inference  
   
z8TestShapeInference.test_upsample.<locals>.call_inferencer	  Upsample is deprecated)r`   r   rX  r   r   r   r   r   r   r   r   r   ri   r   ValidationError	exceptionr5   rY   r   r,   rZ  cmr^  r-   rY  r.   test_upsample  s8   



z TestShapeInference.test_upsamplec                   s*  dkr0 dtjdfgtddgdgg ddgg  j tdtjdgttgd	 d 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g ddd ddgd  fdd}dkrn|  d S tjj}|  W d    n1 sw   Y  |j}dt|v sJ d S )Nr   rJ   r   rJ  r          @rN  gffffff@rP  rQ  rM   r   r	  r	  r   rK  rR  rT  rL  <f4dtypeTvalsrawr  c                     rU  rV  rW  r-   rY  r-   r.   rZ  8  r[  zATestShapeInference.test_upsample_raw_data.<locals>.call_inferencer	  r\  )r`   r   rX  r   r   r   r   r   r   r   r   r   arraytobytesr   ri   r   r]  r^  r5   r_  r-   rY  r.   test_upsample_raw_data  sD   



z)TestShapeInference.test_upsample_raw_dataExpandc              	   C  r=  )NrJ   r   r   r   r   rn  r   )rM   r   r  r  rM   r   r  r   r`   r   rX  rW   r   r   r   r   r   r   r   r   r-   r-   r.   test_expandH  r<  zTestShapeInference.test_expandc              	   C  r7  )
NrJ   r-   r   r   rn  r   )r   r9  r  r   rq  r   r-   r-   r.   test_expand_scalar_inputV  r<  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 )NrJ   ro  r   r   rn  r   r   r   <i8rf  Trh  r  r   r   r   )r`   r   rX  rW   r   r   r   rk  rl  r   r   r   r   r   r   r-   r-   r.   test_expand_raw_datad  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 )
NrJ   r   rM   Nr   r   rn  r   r  )NrM   Nr   
r`   r   rX  rW   r   r   r   r   r   r   r   r-   r-   r.   test_expand_dynamic_shapez  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 )	NrJ   rw  r   )unk__0rn  r   r  r   rx  r   r-   r-   r.   test_expand_symbolic_shape  s   



z-TestShapeInference.test_expand_symbolic_shapeResizec              	   C  sx  |dkr;| 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 |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g d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 | j dtjdfdtjdfdtjdfgtdg d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  rJ   rK  rR  rT  r|  r   rL  r  rS  r      roir9  sizesrJ   r~  rR  r  )r   r7   r  r   rJ   r~   r  )r`   r   rX  r   r   r   r   r   r   r   r   rW   r   r-   r-   r.   test_resize_size  s^   











z#TestShapeInference.test_resize_sizeRMSNormalizationc              	   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   CHWscale)r  r  r  r   rM   r!  r   r   r   r-   r-   r.   test_rms_normalization  s   


z)TestShapeInference.test_rms_normalizationc              	   C     |  |dk d | jdtjdfdtjdfdtjdfgtd	g d
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 18rJ   rK  r~  rT  r  r   r|  r  r   r   axesr  r   r  )rM   r   r  r   r   r   r`   r   rX  r   rW   r   r   r   r   r   r   r   r   r-   r-   r.   test_resize_size_axes_2_3     




z,TestShapeInference.test_resize_size_axes_2_3c              	   C  r  )Nr  r  rJ   rK  r~  rT  r  r   r|  r  r   r   rM   r  r  r  )rM   r   r   r  r   r  r   r-   r-   r.   test_resize_size_axes_3_2  r  z,TestShapeInference.test_resize_size_axes_3_2c              	   C  r  )Nr  +keep_aspect_ratio_policy is from Version 18rJ   r   r7   r~  rT  r  r   r|  r  r   
not_largerkeep_aspect_ratio_policyr  r  )r   r  r   r  r   r-   r-   r.   test_resize_size_not_larger  0   



z.TestShapeInference.test_resize_size_not_largerc              	   C     |  |dk d | jdtjdfdtjdfdtjdfgtd	g d
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 )Nr  3axes & keep_aspect_ratio_policy are from Version 18rJ   rK  r~  rT  r  r   r|  r  r   r   r  r  r  r  r  )rM   r   r   r  r   r  r   r-   r-   r.   $test_resize_size_axes_2_3_not_larger)  2   


	
z7TestShapeInference.test_resize_size_axes_2_3_not_largerc              	   C  r  )Nr  r  rJ   r  r~  rT  r  r   r|  r  r   not_smallerr  r  r  )r  r  r   r  r   r-   r-   r.   test_resize_size_not_smallerG  r  z/TestShapeInference.test_resize_size_not_smallerc              	   C  r  )Nr  r  rJ   rK  r~  rT  r  r   r|  r  r   r   r  r  r  r  )rM   r   r  r  r   r  r   r-   r-   r.   %test_resize_size_axes_2_3_not_smallerd  r  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	g d
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}  roi input is from Version 11rJ   rK  r~  r  rR  rT  r|  rJ   r~  rR  r   rL  r  rS  r   r   r`   r   rX  r   r   r   r   r   r   r   r   r   r-   r-   r.   test_resize_scale  s    



z$TestShapeInference.test_resize_scalec              	   C     |  |dk d | jdtjdfdtjdfdtjdfgtd	g d
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  r  rJ   rK  r~  r  rR  r   r|  r  r   r   r  )rO  rP  r  rS  r   r  r   r-   r-   r.   test_resize_scale_axes_2_3  r  z-TestShapeInference.test_resize_scale_axes_2_3c              	   C  r  )Nr  r  rJ   rK  r~  r  rR  r   r|  r  r   r  r  )rP  rO  r  rS  r   r  r   r-   r-   r.   test_resize_scale_axes_3_2  r  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	g d
dggg tdtjdtjg ddd	 ddgd}| j
|tdtjdgtt|gd d S )Nr}  r  rJ   r   r~  r  rR  rT  r|  r  r   rb  re  rf  Trh  r  rd  r   )r   r`   r   rX  r   r   r   r   rk  rl  r   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g ddggg tdtjdtj	g d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 )Nr}  r  rJ   r   r~  r  rR  rT  r  r   r|  r  r   rb  re  rf  Trh  rt  r  rd  r   )r   r`   r   rX  r   rW   r   r   r   rk  rl  r   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g ddggg td	tjd
tj	g ddd
 ddgd}| j|tdtjdgtd|gd d S )Nr}  z#This test only works for Version 11rJ   r   r~  r  rR  r  r  rT  r|  r  r   )rM   r  r9  r  rt  rf  Trh  r  r  r   )r   r`   r   rX  r   rW   r   r   r   rk  rl  r   r   r   r   r   r-   r-   r.   #test_resize_opset11_scales_is_empty  s4   




z6TestShapeInference.test_resize_opset11_scales_is_emptyShapec                 C  P   |  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 )NrJ   r   r  r   r   r   
r`   r   r   r   r   r   rW   r   r   r   r   r-   r-   r.   
test_shape  s   
zTestShapeInference.test_shapec              	   C  d   |  |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 15rJ   r   r  r   r   startr   r   r   r`   r   r   r   r   r   rW   r   r   r   r   r-   r-   r.   test_shape_start_1)     
z%TestShapeInference.test_shape_start_1c              	   C  r  )Nr  r  rJ   r   r  r   r   endr   r   r  r   r-   r-   r.   test_shape_end_17  r  z#TestShapeInference.test_shape_end_1c              	   C  r  )Nr  r  rJ   r   r  r   r#   r  r  r   r  r   r-   r-   r.   test_shape_negative_startE  r  z,TestShapeInference.test_shape_negative_startc              	   C  r  )Nr  r  rJ   r   r  r   r  r   r   r  r   r-   r-   r.   test_shape_clip1S  r  z#TestShapeInference.test_shape_clip1c              	   C  r  )Nr  r  rJ   r   r  r   r  r  r   r   r  r   r-   r-   r.   test_shape_clip2a  r  z#TestShapeInference.test_shape_clip2Sizec                 C  r  )NrJ   r   r  r   r-   r   r  r   r-   r-   r.   	test_sizeo  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 )	NrJ   r   r   ir   r  r   r   r   
r`   r   r   rW   r   r   r   r   r   r   r   r-   r-   r.   test_gatherz  r   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 )NrJ   )r   r   r7   r  r   r  r   r   r!  )r   r   rM   r7   r   r  r   r-   r-   r.   test_gather_axis1  r$  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 )NrJ   r   r  r-   r  r   r   r  r   r-   r-   r.   test_gather_into_scalar  r   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 )	NrJ   r  r  r  r   r   r!  r   r  r   r-   r-   r.   test_gather_elements  r$  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 )
NrJ   r  r  r   r  r   r   r!  r   r  r   r-   r-   r.   test_gather_elements_axis0  r$  z-TestShapeInference.test_gather_elements_axis0Scatterc                 C  h   |dkr-|  tjj}| | W d    n1 sw   Y  |j}dt|v s+J d S | | d S Nr}  zScatter is deprecated)r   ri   r   r]  _test_scatterr^  r5   rY   r   r,   r`  r^  r-   r-   r.   test_scatter     zTestShapeInference.test_scatterc                 C  sf   |  dtjdfdtjdfdtjdfgtdg ddggg }| j|tdtjdgtt	|gd	 d S )
NrJ   r  r  r   ur  rJ   r  r  r   r   r  rY   r,   ry   r-   r-   r.   r    s   


	
z TestShapeInference._test_scatterc                 C  r  r  )r   ri   r   r]  _test_scatter_axis1r^  r5   r  r-   r-   r.   test_scatter_axis1  r  z%TestShapeInference.test_scatter_axis1c              	   C  sj   |  dtjdfdtjdfdtjdfgtdg ddgd	d
gg }| j|tdtjdgtt	|gd d S )NrJ   r  r  r   r  r  r  r   r   r!  r   r  r  r-   r-   r.   r    s   


	
z&TestShapeInference._test_scatter_axis1ScatterElementsc                 C  sf   |  dtjdfdtjdfdtjdfgtdg ddggg }| j|tdtjdgtt	|gd	 d S )
NrJ   r  r  r   r  r  r  r   r   r  r   r-   r-   r.   test_scatter_elements     


	
z(TestShapeInference.test_scatter_elementsc              	   C  sj   |  dtjdfdtjdfdtjdfgtdg ddgd	d
gg }| j|tdtjdgtt	|gd d S )NrJ   r  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  sf   |  dtjdfdtjdfdtjdfgtdg dd	ggg }| j|td	tjdgtt	|gd
 d S )NrJ   r   r7   r  indicesr   r   rM   updatesr   r   r  r  )rJ   r  r  r   r   r  r   r-   r-   r.   test_scatternd  r  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g ddggg }| j|td
tjd tdtjd gtt	|gd d S )NrJ   r  r  r  r  r  r   r2  rQ   
x_reshapedr  )r  r  r  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g ddgg }| j|tdtjdgtt|gd	 d 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}| j|tdtjdgtt|gd	 d S )Nr}  rJ   r   r   r   r   rM   r   r  r   )r   rM   r   r7   r  r  r   r  rT  r  )r`   r   r   r   r   r   r   r   r   rW   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 )NrJ   r   r   r  r   r   	r`   r   r   r   r   r   r   r   r   r   r-   r-   r.   test_stringconcat]     


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 )NrJ   r   r   )r   r   r   r  r   r   r  r   r-   r-   r.   test_stringconcat_broadcastingm  r  z1TestShapeInference.test_stringconcat_broadcastingRegexFullMatchc              	   C  T   |  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 )NrJ   rS  r  r   ^[A-Z][a-z]*$patternr   
r`   r   r   r   r   r   BOOLr   r   r   r   r-   r-   r.   test_regex_full_match}  r.  z(TestShapeInference.test_regex_full_matchc              	   C  r  )NrJ   r-   r  r   r  r  r   r  r   r-   r-   r.   !test_regex_full_match_empty_shape  r.  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 )NrJ   r  r  r   r  r}  r  	r`   r   r   r   r
   r*   r,   r   r   rY   ry   operatorsetidr-   r-   r.   test_squeeze_no_axes_opset11  s   
z/TestShapeInference.test_squeeze_no_axes_opset11c                 C  sX   |  dtjdfgtddgdgg }t }d|_d|_| j|tdtjd g|gd d S )NrJ   )r   r   r   NrM   r   r  r   r  r}  r   r  r  r-   r-   r.   *test_squeeze_no_axes_dynamic_input_opset11  s   

z=TestShapeInference.test_squeeze_no_axes_dynamic_input_opset11c              	   C  ^   | 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 )
NrJ   r  r  rT  	Unsqueezer   )r   r   r   r7   r  )r   r   r   r   rM   r   r`   r   r   rW   r   r   r   r   r   r-   r-   r.   test_unsqueeze_regular     z)TestShapeInference.test_unsqueeze_regularc              	   C  r  )
NrJ   r  r  r   r   r   )r   r   r  r   r   r   r7   r   r  r   r-   r-   r.   test_unsqueeze_unsorted_axes  r  z/TestShapeInference.test_unsqueeze_unsorted_axesc              	   C  r  )
NrJ   r  r  r   r   r   )r   r#   r  r  r  r   r-   r-   r.   test_unsqueeze_negative_axes  r  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 )	NrJ   r-   r  r   r   )r#   r  r  r  r   r-   r-   r.   test_unsqueeze_scalar  r  z(TestShapeInference.test_unsqueeze_scalarc                 C  sX   |  dtjdfdtjdfdtjdfgtdg ddggg }| |tdtjd	g d S )
NrJ   )r   rM   r   startsr  endsSlicerJ   r  r	  r   r%  r`   r   r   rW   r   r   r   r   r-   r-   r.   test_slice_without_input_shape     


	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g d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 )NrJ   r  r  r   r	  r
  r  r   r   r   rt  rf  Trh  r  r  r   r`   r   r   rW   r   r   r   rk  rl  r   r   r   r-   r-   r.   test_slice_with_input_shape  s(   


z.TestShapeInference.test_slice_with_input_shapec              
   C  sx   | j dtjdfdtjdfdtjdfgtdg d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 )NrJ   )r   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	     


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g d	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 )NrJ   r7   r  r   r  r   r	  r  stepsr
  rJ   r  r	  r  r  r   rB  )rM   r  r  )r   r   r   r  r   rM   rM   r  r   r-   r-   r.   !test_slice_with_input_shape_steps  "   




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g d	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 )NrJ   )r   r  rM   r  r   r	  r  r  r
  r  r   r   r   r  )r   rM   r  )r   r  rM   r  r   r-   r-   r.    test_slice_with_input_shape_axes0  r  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g d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 )NrJ   r  r  r   r	  r  r
  rJ   r  r	  r  r   r  r  r  r   r  r   r-   r-   r.   test_slice_unsorted_axesE      



z+TestShapeInference.test_slice_unsorted_axesc                 C     | j dtjdfdtjdfdtjdfdtjdfgtdg d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 NrJ   r  r  r   r	  r  r
  r  r   r  )   iU  r   r   r  r  r  r   r-   r-   r.   test_slice_giant_numberY  r  z*TestShapeInference.test_slice_giant_numberc                 C     | 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g d	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 )NrJ   r  r  r   r	  r  r  r
  r  r   r  )r   r   r!  )r   r   r  r   r  r   r-   r-   r.   test_slice_giant_stepm  s$   




z(TestShapeInference.test_slice_giant_stepc                 C  r  )NrJ   r  r  r   r	  r  r
  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  r  )NrJ   r  r  r   r	  r  r
  r  r   )r   )r   r   r!  r  r  r  r   r-   r-   r.   test_slice_negative_start  s$   




z,TestShapeInference.test_slice_negative_startc                 C  r#  )NrJ   ru  r  r   r	  r  r  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g d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 )NrJ   r+  r  r  r	  r  r
  r  r   )r   r  )r   r   r  r   r-   r-   r.   test_slice_variable_copy  r  z+TestShapeInference.test_slice_variable_copyc                 C  r  r  )r`   r   DOUBLErX  r   r   r   r   r   r-   r-   r.   test_slice_variable_input_types  r  z2TestShapeInference.test_slice_variable_input_typesc                 C  s`   |  dtjdfdtjdfgtdddgdg dg dg d	d
gg }| |tdtjdg d S )NrJ   r   r   r7   r  r   r   r7   r   rM   r   r   Convr   r   r   r   r   r   r   r  r   r   rM   r  r  r  r   r7   r   r   r   r   r   r-   r-   r.   	test_conv  $   


zTestShapeInference.test_convc              	   C  R   |  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 )
NrJ   r   r   )2   r   rM   r/  r   r   r  )r   r7  r   r   r   r-   r-   r.   test_conv_1d_simple     

z&TestShapeInference.test_conv_1d_simplec              	   C  T   |  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 )
NrJ   r   r   r9  r9  r9  r   r7  r   r   r   r   r/  r   r   rM   r   r  r   r7  r  r   rM   r   r   r-   r-   r.   test_conv_dilations     

z&TestShapeInference.test_conv_dilationsc              	   C  r:  )
NrJ   r;  r   r<  r/  r   r=  r
  r   r7  r  r   rM   r   r   r-   r-   r.   test_conv_strides  r@  z$TestShapeInference.test_conv_stridesc              	   C  r:  )
NrJ   r   r   r   r  r   r   r<  r/  r   r   r   rM   r   r   rM   r  r   r7  r  r  r  r   r   r-   r-   r.   test_conv_pads,  r@  z!TestShapeInference.test_conv_padsc              	   C  P   |  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 )
NrJ   rC  r   r7  r   r   r   rM   r/  r   
SAME_UPPER)auto_pad)r   r7  r   r  r   r   r   r-   r-   r.   test_conv_auto_pad9     

z%TestShapeInference.test_conv_auto_padc              
   C  V   |  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
g d S )NrJ   rC  r   rH  r/  r   rI  rM   rM   r   rJ  r  )r   r7  r   r   r   r   r   r-   r-   r.   test_conv_auto_padsF  s   

z&TestShapeInference.test_conv_auto_padsc              
   C  rM  )NrJ   )r   r   A   @   ?   r   rH  r/  r   rI  r   )rJ  r  )r   r7  rQ  rR  rS  r   r   r-   r-   r.   test_conv_auto_pad_dilationW  s   

z.TestShapeInference.test_conv_auto_pad_dilationc              	   C  rG  )
NrJ   r;  r   r   r   r9  r9  r9  r/  r   r   groupr   r   r   r   r   r   r   r-   r-   r.   test_conv_groupi  rL  z"TestShapeInference.test_conv_groupc              	   C  r6  )
NrJ   r   r   )r7  r   r7   r/  r   rM   r
  )r   r7  r   r   r   r-   r-   r.   test_conv_only_one_posv  r9  z)TestShapeInference.test_conv_only_one_posc              	   C  r:  )
NrJ   r   r   Nr  r   r   r<  r/  r   rD  r  r   r7  Nr  r  r   r   r-   r-   r.   test_conv_partial_missing_shape  s   

z2TestShapeInference.test_conv_partial_missing_shapec              	   C  sT   |  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 )	NrJ   rC  r   r7  r   Nr   r   r/  r   rD  r  r   r   r-   r-   r.   &test_conv_partial_missing_weight_shape  r@  z9TestShapeInference.test_conv_partial_missing_weight_shapec                 C  X   |  dtjdfdtjdfdtjdfgtdg dd	ggg }| |td	tjd
g d S )NQ)Bq_num_headsq_seq_length	head_sizeK)rb  kv_num_heads
kv_seq_lenre  V)rb  rg  rh  v_head_size	Attention)ra  rf  ri  r   )rb  rc  rd  rj  r   r   r-   r-   r.   test_attention_4d  s>   z$TestShapeInference.test_attention_4dc                 C  sP   |  dtjdfgtddgddg dg ddgg }| |tdtjd	g d S )
NrJ   rC  AveragePoolr   rI  )r   r   rM   rN  rJ  r   r  )r   r   r   r   r   r   r   r-   r-   r.   test_average_pool_auto_pads  s    
z.TestShapeInference.test_average_pool_auto_padsc              
   C  P   |  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   r7   r   r   r   rm  r   rM   r   r  r7   r   rM   rM   r   r   r-   r-   r.    test_average_pool_with_dilations     	z3TestShapeInference.test_average_pool_with_dilationsc                 C  X   |  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   rq  rm  r   rI  rM   r   rJ  r   r  r  rs  r   r   r-   r-   r.   Atest_average_pool_with_same_upper_padding_and_stride_and_dilation  "   zTTestShapeInference.test_average_pool_with_same_upper_padding_and_stride_and_dilationc                 C     |  d d S )NRelur   rY   r-   r-   r.   	test_relu     zTestShapeInference.test_reluc                 C  rz  )NIdentityr|  r}  r-   r-   r.   test_identity  r  z TestShapeInference.test_identityc                 C  sr   |  dtjdfdtjdfdtjdfgtdg d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rM   r7   r   SequenceConstructr  r  r  in_sequencer  output_sequencerM   Nr   r`   r   r   r   r   r   r   r-   r-   r.   test_identity_sequence 	  s,   


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 )N	in_tensorr   Optionalin_optionalr  output_optional)	r`   r   r   r   r   make_tensor_type_protomake_optional_type_protor   make_value_info)rY   ry   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g d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  r  )
r`   r   r   r   r   r  make_sequence_type_protor  r   r  )rY   ry   r  sequence_type_protor  r-   r-   r.   test_identity_optional_sequence.	  s2   







z2TestShapeInference.test_identity_optional_sequencec                 C  L   |  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 )NrJ   r   r   Addr   r   r   r-   r-   r.   test_addL	     

zTestShapeInference.test_addc                 C  r  )NrJ   r   r   Powr   r   r   r-   r-   r.   test_powY	  r  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 )NrJ   rM   r   r   r   BitShiftr   RIGHT	directionr`   r   UINT32r   r   r   r   r-   r-   r.   test_bitshiftf	  rL  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 )	NrJ   )   r   r   r   r  r  r   r  r  r  r   r-   r-   r.    test_bitshift_broadcast_to_firsts	     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 )	NrJ   r  r   r  r  r   r  r  r  r   r-   r-   r.   !test_bitshift_broadcast_to_second}	  r  z4TestShapeInference.test_bitshift_broadcast_to_secondc                 C  rz  )NSumr|  r}  r-   r-   r.   test_sum_single	  r  z"TestShapeInference.test_sum_singlec                 C  X   |  dtjdfdtjdfdtjdfgtdg ddggg }| |tdtjdg d S )NrJ   r   r   r   r  r&  r'  r   r   r-   r-   r.   test_sum_multi	  r  z!TestShapeInference.test_sum_multic                 C  r`  )NrJ   )r   r   r7   r   r   r   r   r   )r   r   r  r&  r'  r   r   r   r-   r-   r.   test_sum_multi_broadcasting	  r  z.TestShapeInference.test_sum_multi_broadcastingc                 C  N   |  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 )NrJ   )r   r   r7   r   r  r  r'  r   r   r   r-   r-   r.   test_sum_broadcasting_param	     

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 )NRandomNormalr'  r  )rg  r   )r`   r   r   r+  r   r   r   r-   r-   r.   test_random_normal	  s   	z%TestShapeInference.test_random_normalc                 C  B   |  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_like	     z*TestShapeInference.test_random_normal_likec              	   C  H   |  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'  rf  r`   r   r   r   r+  r   r   r   r-   r-   r.   "test_random_normal_like_with_dtype	     z5TestShapeInference.test_random_normal_like_with_dtypec                 C  r  )NrJ   ru  	Bernoullir'  r   r   r-   r-   r.   test_bernoulli	  r  z!TestShapeInference.test_bernoullic              	   C  r  )NrJ   r   r  r'  rf  r  r   r-   r-   r.   test_bernoulli_with_dtype	  r  z,TestShapeInference.test_bernoulli_with_dtype
input_typeTensorProto.DataTypec                 C  sH   |  d|dfd|dfgt|ddgdgg }| |tdtjdg d S )NrJ   r   r   r   r`   r   r   r   r   r  rY   r   r  ry   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 )NrJ   r  r   r   r   r  r  r-   r-   r.   $_logical_binary_op_with_broadcasting
  s   z7TestShapeInference._logical_binary_op_with_broadcastingc                 C      |  dtj | dtj d S )NAndr  r   r  r  r}  r-   r-   r.   test_logical_and
     z#TestShapeInference.test_logical_andc                 C  r  )NOrr  r}  r-   r-   r.   test_logical_or
  r  z"TestShapeInference.test_logical_orc                 C  r  )NXorr  r}  r-   r-   r.   test_logical_xor
  r  z#TestShapeInference.test_logical_xorc                 C  r  )NGreaterr  r}  r-   r-   r.   test_greater
  r  zTestShapeInference.test_greaterc                 C  r  )NLessr  r}  r-   r-   r.   	test_less!
  r  zTestShapeInference.test_lessc                 C  r  NEqualr  r}  r-   r-   r.   
test_equal%
  r  zTestShapeInference.test_equalc                 C  r  r  )r  r   r   r  r}  r-   r-   r.   test_equal_string)
  r  z$TestShapeInference.test_equal_stringc                 C  @   |  dtjdfgtddgdgg }| |tdtjdg d S )NrJ   r   Notr   )r`   r   r  r   r   r   r   r-   r-   r.   test_logical_not-
     z#TestShapeInference.test_logical_notc                 C  r  )NLessOrEqualr  r}  r-   r-   r.   test_less_or_equal5
  r  z%TestShapeInference.test_less_or_equalc                 C  r  )NGreaterOrEqualr  r}  r-   r-   r.   test_greater_or_equal9
  r  z(TestShapeInference.test_greater_or_equalc              	   C  F   |  dtjdfgtddgdgddgg }| |tdtjdg d S )NrJ   rM   r   r   r7   Flattenr   rM   r!  )r     r   r   r-   r-   r.   test_flatten=
  r   zTestShapeInference.test_flattenc                 C  B   |  dtjdfgtddgdggg }| |tdtjdg d S )NrJ   r  r  r   )rM   <   r   r   r-   r-   r.   test_flatten_default_axisG
  r  z,TestShapeInference.test_flatten_default_axisc              	   C  r  )NrJ   r  r  r   r   r!  )r   x   r   r   r-   r-   r.   test_flatten_zero_axisQ
  r   z)TestShapeInference.test_flatten_zero_axisc              	   C  r  )NrJ   )rM   r   r   r7   r  r   rM   r!  )Nr  r   r   r-   r-   r.   test_flatten_unknown_dim[
  r   z+TestShapeInference.test_flatten_unknown_dimc              	   C  J   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  rJ   rM   r   d   r  SpaceToDepthr   	blocksizerM   ,  r  r  r   rY   r   ry   r-   r-   r.   test_space_to_depthe
     z&TestShapeInference.test_space_to_depthc              	   C  r  )Nr  rJ   )rM   r   r  r  r  r   r  )rM   Nr  r  r   r  r-   r-   r.   test_space_to_depth_unknown_dimp
  r  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  rJ   r  DepthToSpacer   DCR)r  moder  r   r  r-   r-   r.   test_depth_to_space{
  s   z&TestShapeInference.test_depth_to_spaceseqlenint	batchsizeinpsize
hiddensizec              
   C  s   |  dtj|||ffdtjd||ffdtjd||ffgtdg dddg|d	gg }| |tdtj|d||ftdtjd||fg d S )
NrJ   wr   rRNNrJ   r  r  alllasthidden_sizer   rY   r  r  r  r   ry   r-   r-   r.   _rnn_forward
  s*   zTestShapeInference._rnn_forwardc                 C     |  dddd d S NrR      r  r   )r
  r}  r-   r-   r.   test_rnn_forward
     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g dddg|d	d
gg }| |tdtj|d||ftdtjd||fg d S )NrJ   r  rM   r  r  r  r  r  bidirectional)r  r  r   r	  r-   r-   r.   _rnn_bidirectional
  s2   	z%TestShapeInference._rnn_bidirectionalc                 C  s&   |  dddd |  ddddd d S )NrR  r  r  r   r  )_rnn_layoutr}  r-   r-   r.   test_rnn_layout
  s   z"TestShapeInference.test_rnn_layoutforwardr  c                 C  s   |  dtj|||ffdtjd||ffdtjd||ffgtdg dddg|d|d	gg }|d
kr3d}nd}| |tdtj||||ftdtj|||fg d S )NrJ   r  r   r  r  r  r  r  )r  layoutr  r  rM   r   )rY   r  r  r  r   r  ry   num_directionsr-   r-   r.   r  
  s>   

zTestShapeInference._rnn_layoutc                 C  r  r  )r  r}  r-   r-   r.   test_rnn_bidirectional
  r  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g dg d|d	gg }| |td
tj|d||ftdtjd||ftdtjd||fg d S )NrJ   r  r   r   r  LSTMr  )r  hiddenr  r  r  r  r  r   r	  r-   r-   r.   _lstm_forward
  s6   z TestShapeInference._lstm_forwardc                 C  r  r  )r  r}  r-   r-   r.   test_lstm_forward  r  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 )NrJ   r   r   r7   r  TopKkr   r   r  r   r  )r   r   r7   rM   r`   r   r   r   r   rW   r   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 )NrJ   r  r  r  r   r   rM   r!  r  r   r  )r   r   rM   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 )NrJ   r  r  r  r   r   rM   r!  r  r   rt  rf  Trh  r  )r   r   r   r  )r`   r   r   r   r   rW   r   rk  rl  r   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 )NrJ   r  r  r  r  r   r   rM   r!  )NNNNr  r   r-   r-   r.   +test_topk_missing_k_value_output_rank_checkR  s   z>TestShapeInference.test_topk_missing_k_value_output_rank_checkc                 C  sX   |  dtjdfdtjdfdtjd fgtdg ddggg }| |tdtjd	g d S )
NrJ   r   r7   r   r7   r}  r   Gemmr&  r'  r   r}  r   r   r-   r-   r.   	test_gemmd  r  zTestShapeInference.test_gemmc              	   C  \   |  dtjdfdtjdfdtjd fgtdg ddgd	d
gg }| |tdtjdg d S )NrJ   r7   r   r   r%  r   r&  r&  r'  r   )transAr'  r   r   r-   r-   r.   test_gemm_transAr     


	z#TestShapeInference.test_gemm_transAc              	   C  r)  )NrJ   r$  r   r}  r7   r   r&  r&  r'  r   )transBr'  r   r   r-   r-   r.   test_gemm_transB  r-  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g ddgd	d	d
gg }| |tdtjdg d S )NrJ   r*  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  r  )NrJ   )   r   r   )r      r&  r'  )r2  r3  r   r   r-   r-   r.   test_gemm_no_bias     z$TestShapeInference.test_gemm_no_biasc              	   C  n   | 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 )NrJ      r   r}  ReduceL1r   r   r   r  keepdimsr  r   r  r  r2  r8  r   r`   r   r   r   r   rW   r
   r*   r,   r   r   r  r-   r-   r.   #test_reduce_op_shape_2_axis_opset13  s   
z6TestShapeInference.test_reduce_op_shape_2_axis_opset13c              	   C  z   | 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 )NrJ   r7  r  r   r9  r   r   r;  r   r  r  r  r<  r   r`   r   r   rW   r   r   r
   r*   r,   r   r   r  r-   r-   r.   #test_reduce_op_shape_2_axis_opset18  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 )NrJ   r8  r   r}  r9  r   r  r   r:  r  r  r2  r*   r,   r8  r   r}  r   )r`   r   r   r   r
   r   r   r  r-   r-   r.    test_reduce_op_empty_set_opset13  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 )NrJ   rC  r  r  r9  r   r   r@  r  r  r  rD  rE  r   )	r`   r   r   rW   r   r   r
   r   r   r  r-   r-   r.    test_reduce_op_empty_set_opset18  s   
z3TestShapeInference.test_reduce_op_empty_set_opset18c              	   C  r6  )NrJ   r7  r9  r   r   r   r:  r  r   r  r  r2  r8  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  r?  )NrJ   r7  r  r   r9  r   r   r@  r   r  r  r  rH  r   rA  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 )NrJ   r7  r9  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 )NrJ   r7  r9  r   r   r@  r-   r   r   r-   r-   r.   -test_reduce_op_shape_no_axes_do_not_keep_dims  r  z@TestShapeInference.test_reduce_op_shape_no_axes_do_not_keep_dimsc              	   C  r  )
NrJ   r7  r  r   r9  r   )r#   r&  r  rH  r  r   r-   r-   r.   "test_reduce_op_shape_negative_axis  r  z5TestShapeInference.test_reduce_op_shape_negative_axisc              
   C  D   |  dtjdfgtddddddgg }| |tdtjdg d S )NrJ   r7  ArgMaxr   r   r"  r;  rE  r`   r   r   r   r   r   rW   r   r-   r-   r.   test_argmax_shape#     z$TestShapeInference.test_argmax_shapec              
   C  rN  )NrJ   r7  rO  r   r   rP  )r   r}  rQ  r   r-   r-   r.   test_argmax_shape_keepdims-  rS  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 )NrJ   r7  rO  r   )r   r   r}  rQ  r   r-   r-   r.   test_argmax_shape_default_value7  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 )NrJ   r7  rO  r   r&  r!  rE  rQ  r   r-   r-   r.   test_argmax_shape_negative_axis?  r  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  ratior-   Dropoutr'  r   r   r-   r-   r.   test_dropoutI  s&   
	zTestShapeInference.test_dropoutc                 C  s   | j ddddd d S )NLRN      ?r   )alphabetasizer|  r}  r-   r-   r.   test_LRNi  s   zTestShapeInference.test_LRNc              	   C  l   |  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g d	d
ggg }| |td
tjdg d S )NrJ   r-  r  rT  r   meanvarBatchNormalizationrJ   r  r   rb  rc  r'  r   r   r-   r-   r.   test_batch_norml      




z"TestShapeInference.test_batch_normc              	   C  ra  )NrJ      r  r  r   rb  rc  rd  re  r'  r   r   r-   r-   r.   test_batch_norm_rank1  rg  z(TestShapeInference.test_batch_norm_rank1c              	   C  sh   |  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	g d
dggg }| tjj| j| d S )NrJ   rh  r  r   r   r  rb  rc  rd  re  r'  r   r   r-   r-   r.   test_batch_norm_invalid  s   




z*TestShapeInference.test_batch_norm_invalidc              
   C  V   |  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 )
NrJ   r   Splitr   r   r#   rM   r"  num_outputsr  r   r   r-   r-   r.   test_split_negative_axis     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 )NrJ   r   splitr   rm  r   r   r   r!  ro  r  r   r   r  r   r-   r-   r.   test_split_with_split_attribute  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 )NrJ   )rM   r   r   rr  r   rm  r   r   r   r!  ro  r  )rM   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  rl  )
NrJ   r  rm  r   r   r   rM   rn  r7   r   r   r   r   r-   r-   r.   test_split_from_GLU  rq  z&TestShapeInference.test_split_from_GLUc              
   C  b   |  dtjdfgtddgg ddddgg }| |tdtjd	td
tjd	tdtjdg d S )NrJ   )r9  rM   rm  r   r   r   r   r   rn  r   r  r   r   r  r   r   r-   r-   r.   test_split_uneven_split_2d     z-TestShapeInference.test_split_uneven_split_2dc              
   C  rw  )NrJ   )rM   r   r   rm  rx  r   r   rn  r   rM   r   r   r   r   rM   r   r   r   r   r-   r-   r.   test_split_uneven_split_3d  rz  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 )NrJ   r  rm  r   r   r   rM   rn  Sigmoidr   ru  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 )NrJ   r  rm  r   r   r   rM   rn  r~  r   Mulr   ru  r   r   r-   r-   r.   test_GLU  s    	zTestShapeInference.test_GLUc                 C  r  )NrJ   r   r7   Softmaxr   r   r   r-   r-   r.   test_softmax_2d'  r  z"TestShapeInference.test_softmax_2dc                 C  r  )NrJ   r  r  r   r   r   r-   r-   r.   test_softmax_3d/     z"TestShapeInference.test_softmax_3dc                 C  r  )NrJ   r  Hardmaxr   r   r   r-   r-   r.   test_hardmax_2d9  r  z"TestShapeInference.test_hardmax_2dc                 C  r  )NrJ   r  r  r   r   r   r-   r-   r.   test_hardmax_3dA  r  z"TestShapeInference.test_hardmax_3dc                 C  r  )NrJ   r  
LogSoftmaxr   r   r   r-   r-   r.   test_logsoftmax_2dK  r  z%TestShapeInference.test_logsoftmax_2dc                 C  r  )NrJ   r  r  r   r   r   r-   r-   r.   test_logsoftmax_3dU  r  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 )NrJ   r  r  r   r#   r!  r   r   r-   r-   r.    test_logsoftmax_3d_negative_axis_  rS  z3TestShapeInference.test_logsoftmax_3d_negative_axisc              	   C  J   |  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   rq  MaxPoolr   rM   r   r7   r   r   r   r   r   r-   r-   r.   test_maxpooli     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   rq  r  r   ZrM   r  r  rQ  r   r-   r-   r.   test_maxpool_with_indicess  s   z,TestShapeInference.test_maxpool_with_indicesc              	   C  J   |  dtjdfgtddgdgg ddgg }| |tdtjdg d S )Nr   r7   r   r   r   r   r  r   r)  r  r7   r   r   r   r   r   r   r-   r-   r.   test_maxpool_3D  r  z"TestShapeInference.test_maxpool_3Dc              
   C  P   |  dtjdfgtddgdgddgg ddgg }| |tdtjdg d S )	Nr   rq  r  r   rM   r   r   rM   rM   r   r  r7   r   r  r  r   r   r-   r-   r.   test_maxpool_with_padding  ru  z,TestShapeInference.test_maxpool_with_paddingc                 C  V   |  dtjdfgtddgdgddgg dddgdgg }| |tdtjdg d S )	Nr   rq  r  r   rM   r  r   r  r  r  r   r   r-   r-   r.   $test_maxpool_with_padding_and_stride      
z7TestShapeInference.test_maxpool_with_padding_and_stridec                 C  R   |  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   rM   Fr   r  	ceil_mode)r  r  r3  r3  r   r   r-   r-   r.   test_maxpool_with_floor_mode      
z/TestShapeInference.test_maxpool_with_floor_modec                 C  r  )	Nr   r  r  r   rM   Tr  )r  r  r  r  r   r   r-   r-   r.   test_maxpool_with_ceil_mode  r  z.TestShapeInference.test_maxpool_with_ceil_modec                 C  R   |  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   rM   Tr  r  r   r   r-   r-   r.   test_maxpool_ceil  r  z$TestShapeInference.test_maxpool_ceilc              
   C  rp  )Nr   rq  r  r   rM   rr  rs  r   r   r-   r-   r.   test_maxpool_with_dilations     z.TestShapeInference.test_maxpool_with_dilationsc                 C  R   |  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   rq  r  r   rI  rM   rn  rs  r   r   r-   r-   r.   /test_maxpool_with_same_upper_padding_and_stride      
zBTestShapeInference.test_maxpool_with_same_upper_padding_and_stridec                 C  rv  )
Nr   rq  r  r   rI  rM   r   rw  rs  r   r   r-   r-   r.   <test_maxpool_with_same_upper_padding_and_stride_and_dilation  ry  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   rq  r  r   rI  rM   r   rn  r   r   r-   r-   r.   3test_maxpool_with_same_upper_padding_and_stride_one  r  zFTestShapeInference.test_maxpool_with_same_upper_padding_and_stride_onec                 C  r  )	Nr   r7   r   r	  r	  r  r   
SAME_LOWERrM   rn  r7   r   r7   r7   r   r   r-   r-   r.   /test_maxpool_with_same_lower_padding_and_stride)  r  zBTestShapeInference.test_maxpool_with_same_lower_padding_and_stridec                 C  rv  )
Nr   r  r  r   r  rM   r   rw  r  r   r   r-   r-   r.   <test_maxpool_with_same_lower_padding_and_stride_and_dilation<  ry  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   rq  r  r   r  rM   r   rn  r7   r   r   r   r   r   r-   r-   r.   3test_maxpool_with_same_lower_padding_and_big_strideP  r  zFTestShapeInference.test_maxpool_with_same_lower_padding_and_big_stridec              	   C  r  )Nr   rq  rm  r   rM   r  r  r   r   r-   r-   r.   test_averagepoolc  r  z#TestShapeInference.test_averagepoolc              	   C  r  )Nr   r  rm  r   r)  r  r  r   r   r-   r-   r.   test_averagepool_3Dm  r  z&TestShapeInference.test_averagepool_3Dc              
   C  r  )	Nr   rq  rm  r   rM   r  r  r  r   r   r-   r-   r.   test_averagepool_with_paddingw  ru  z0TestShapeInference.test_averagepool_with_paddingc                 C  r  )	Nr   rq  rm  r   rM   r  r  r  r   r   r-   r-   r.   (test_averagepool_with_padding_and_stride  r  z;TestShapeInference.test_averagepool_with_padding_and_stridec                 C  r  )
Nr   r  rm  r   r   rM   Tr  r  r   r   r-   r-   r.   test_averagepool_ceil  r  z(TestShapeInference.test_averagepool_ceilc              	   C  r  )Nr   rq  LpPoolr   rM   r  r  r   r   r-   r-   r.   test_lppool  r  zTestShapeInference.test_lppoolc              	   C  r  )Nr   r  r  r   r)  r  r  r   r   r-   r-   r.   test_lppool_3D  r  z!TestShapeInference.test_lppool_3Dc              
   C  r  )	Nr   rq  r  r   rM   r  r  r  r   r   r-   r-   r.   test_lppool_with_padding  r  z+TestShapeInference.test_lppool_with_paddingc                 C  r  )	Nr   rq  r  r   rM   r  r  r  r   r   r-   r-   r.   #test_lppool_with_padding_and_stride  r  z6TestShapeInference.test_lppool_with_padding_and_stridec              
   C  rp  )Nr   rq  r  r   rM   rr  rs  r   r   r-   r-   r.   test_lppool_with_dilations  r  z-TestShapeInference.test_lppool_with_dilationsc                 C  rv  )
Nr   rq  r  r   rI  rM   r   rw  rs  r   r   r-   r-   r.   ;test_lppool_with_same_upper_padding_and_stride_and_dilation  ry  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   rq  rois)rM   r7   
MaxRoiPoolr   rM   )pooled_shape)rM   r   rM   rM   r  r   r-   r-   r.   test_roipool  s   

zTestShapeInference.test_roipoolc                 C  r  )NrJ   r-  LpNormalizationr'  r   r   r-   r-   r.   test_lp_norm  r  zTestShapeInference.test_lp_normc                 C  sX   |  dtjdfdtjdfdtjdfgtdg ddggg }| |tdtjdg d S )	NrJ   r-  r  rT  r   InstanceNormalization)rJ   r  r   r'  r   r   r-   r-   r.   test_instance_norm  r  z%TestShapeInference.test_instance_normc                 C  r  )Nr   rq  GlobalMaxPoolr   r  r   r   r-   r-   r.   test_global_maxpool  r  z&TestShapeInference.test_global_maxpoolc                 C  r  )Nr   rq  GlobalAveragePoolr   r  r   r   r-   r-   r.   test_global_averagepool)  r  z*TestShapeInference.test_global_averagepoolc                 C  r  )Nr   rq  GlobalLpPoolr   r  r   r   r-   r-   r.   test_global_lppool3  r  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  r  r  r  r   r   ConvTransposer   rM   r
  )r  r  !   r  r   r   r-   r-   r.   test_conv_transpose=  r@  z&TestShapeInference.test_conv_transposec              
   C  sZ   |  dtjdfdtjdfgtdddgdddgg dd	gg }| |tdtjd
g d S )Nr   r  r  r  r  r   rM   r  )r  r  r  r  r   r   r   r   r-   r-   r.   test_conv_transpose_with_padsJ     

z0TestShapeInference.test_conv_transpose_with_padsc                 C  `   |  dtjdfdtjdfgtdddgdddgg dd	d	gd
gg }| |tdtjdg d S )Nr   r  r  r  r  r   rM   r  $   )r  r  r   )r  r  r  r  r   r   r-   r-   r.   %test_conv_transpose_with_output_shape[  r5  z8TestShapeInference.test_conv_transpose_with_output_shapec                 C  s`   |  dtjdfdtjdfgtdddgdddgddgg d	d
gg }| |tdtjdg d S )Nr   r  r  )r  r  NNr  r   r   rM   r  )r   r  r  r  r   r   r-   r-   r.   %test_conv_transpose_with_kernel_shapeq  r5  z8TestShapeInference.test_conv_transpose_with_kernel_shapec                 C  r  )Nr   r  r  r  r  r   rM   r  r   )r  r  r  )r  r  "   r  r   r   r-   r-   r.   "test_conv_transpose_with_dilations  r5  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g ddd	gg }| |tdtjd
g d S )Nr   r  r  r  r  r   rM   r  )r  r  rW  )r  rR  r   r   r   r   r-   r-   r.   test_conv_transpose_with_group  s$   


z1TestShapeInference.test_conv_transpose_with_groupc                 C  sb   |  dtjdfdtjdfgtdddgdddgg ddd	d	gd
gg }| |tdtjdg d S )Nr   r  r  r  r  r   rM   r  r  )r  r  rW  r   )r  rR  r  r  r   r   r-   r-   r.   /test_conv_transpose_with_group_and_output_shape  s&   

zBTestShapeInference.test_conv_transpose_with_group_and_output_shapec                 C  sn   |  dtjdfdtjdfdtjdfgtdg dd	d
ddgg ddgg }| jtjjtjjt	
|dd d S )Nr   r  r  r   r   r   r   rb  r  r  )r   r  rb  r   rI  r   )r   r   r   r   )rJ  r  r  Trf   )r`   r   r   r   r   ri   rj   r   rk   r   rh   r   r-   r-   r.   +test_conv_transpose_with_pads_and_auto_pads  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   rI  rM   rO  )r  r  r  r  r   r   r-   r-   r.   test_conv_transpose_auto_pads  s"   

	z0TestShapeInference.test_conv_transpose_auto_padsc              	   C  sF   |  dtjdfgtdddg ddgg }| |tdtjdg d S )Nr   r  MeanVarianceNormalizationr   )r   rM   r   r  r   r   r-   r-   r.   test_mvn_function_output_shape  r   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g d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   sequencerM   r   loop_state_inr   loop_state_outr  r  subgraphloop_state_orig
scan_inputScan)r  r  r  loop_state_finalscan_outputnum_scan_inputsbodyr9  r   r   r   rU   r   rX   r   r`   r   r   r   r   )	rY   
batch_sizeseq_len
input_sizeloop_state_sizer[   output_value_infosr  ry   r-   r-   r.   	test_scan  sV   
	
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  rM   r   r  r   r  r  r  r  r  r  r  r  r  r   r  r	  r   r  )rY   r  r  r  r[   r   r  ry   r-   r-   r.   test_scan_opset9>  sT   
	

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  rM   r   r  r   r  r  r  r  r  r  r  r  r  r   )r  r  scan_input_axesr	  r   r  	rY   
axis_0_lenr  r  r  r[   r   r  ry   r-   r-   r.   test_scan_opset9_axesw  sX   



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 )Nr  r  rM   r   r  r   r  r  r  r  r  r  r  r  r  r   r  r  r  scan_output_axesr	  r   r  r  r-   r-   r.   test_scan_opset9_output_axes  Z   


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 )Nr  r  rM   r   r  r   r  r  r  r  r  r  r  r  r  r   r&  r  r	  r   r  r  r-   r-   r.   test_scan_opset9_negative_axes  r  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condr  If	if_outputthen_branchelse_branchr  r   )r   rX   r   r   r   rU   r`   r  r   r   r   r   rY   r  r  ry   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  r  r  r  r  r  r  r  r  
r   rX   r   r   r   rU   r`   r  r   r   r  r-   r-   r.   test_ifP  >   



	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  r  r  r  r  r  r7   r  r  r  r  rP   r  r  r-   r-   r.   3test_if_with_different_shapes_in_then_else_branchesz  r  zFTestShapeInference.test_if_with_different_shapes_in_then_else_branchesc              
   C  l   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) }r  r  r   r   r9  r  r  r  r  r  	r   r`   r   r  r   rW   r   r   r   rY   
then_graph
else_graphry   r-   r-   r.   test_if_no_shape_in_then_branch  0   


	z2TestShapeInference.test_if_no_shape_in_then_branchc              
   C  r"  )NzKthen_graph () => (then_output) { then_output = ReduceSum <keepdims=0> (X) }zQelse_graph () => (else_output) { else_output = ReduceSum <keepdims=0> (X, axes) }r  r  r   r#  r  r  r  r  r$  r%  r-   r-   r.   test_if_no_shape_in_else_branch  r)  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   r   r   then_optional_outputr  then_tensor_valuer  r7   else_optional_outputelse_tensor_valuer  r  r  r   r  r  r  rP   )r   r  r   rU   r  r  rX   r   r`   r  r   r   )rY   then_tensor_protothen_optional_type_protothen_optional_vir  else_tensor_protoelse_optional_type_protoelse_optional_vir  ry   output_tensor_protooutput_optional_type_protooutput_optional_vir-   r-   r.   <test_if_with_different_optional_shapes_in_then_else_branches  sn   




	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   rM   r   r  r  r   r   r-   r-   r.   )test_maxunpool_shape_without_output_shape   r  z<TestShapeInference.test_maxunpool_shape_without_output_shapec              
   C  sp   |  dtjdfdtjdfdtjdfgtdg ddd	d	gd	d	gd
gtdtjd g}| |tdtjd g d S )Nr:  r  r;  r   rT  r<  )r:  r;  r   r   rM   r=  )r`   r   r   r   r   r   r   r-   r-   r.   &test_maxunpool_shape_with_output_shape1  s$   


	z9TestShapeInference.test_maxunpool_shape_with_output_shapec                 C  sV   |  dtjdfdtjdfdtjdfgtdg dd	gg }| |td	tjd
g d S )Nr  r  depthr-   valuesr   OneHotr  r@  rA  r   )rM   rM   Nr`   r   rW   r   r   r   r   r   r-   r-   r.   test_onehot_without_axisG  s   


	z+TestShapeInference.test_onehot_without_axisc              	   C  sZ   |  dtjdfdtjdfdtjdfgtdg dd	d
dgg }| |td	tjdg d S )Nr  rM   r   r7   r@  r  rA  r   rB  rC  r   r   r!  )rM   Nr   r7   rD  r   r-   r-   r.   test_onehot_with_axisU  s   


	z(TestShapeInference.test_onehot_with_axisc              	   C  sh   | j dtjdfdtjdfdtjdfgt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-   rA  r   rB  rC  r      r  )rM   rM   rI  r`   r   rW   r   r   r   r   r   r   r-   r-   r.   test_onehot_without_axis_2c  s   



z-TestShapeInference.test_onehot_without_axis_2c              	   C  sl   | j dtjdfdtjdfdtjdfgtdg dd	d
dgg tdtjddgd}| |td	tjdg d S )Nr  rF  r@  r  rA  r   rB  rC  r   r   r!  rH  r  )rM   rI  r   r7   rJ  r   r-   r-   r.   test_onehot_with_axis_2r  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g dddg|dgg }| 	|t dtjd t dtjdg d S )Niter_num_inr  cond_inr  r-   cond_outr  r  r   r  outer_scope_inputr  max_trip_count	cond_origr  r   Loop)rQ  rR  r  r  loop_outputr  Nr   
r   r   rW   rU   r   r   rX   r   r`   r   rY   r[   r   r  ry   r-   r-   r.   	test_loop  sP   



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 )NrM  r  rN  rO  r  r   r  rP  r  rQ  rR  rS  rT  rU  rV  rW  rX  r-   r-   r.   test_loop_no_state  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 )NrF  r   r   r  rG  ConstantOfShaper   rH  r  r   r`   r   r   r   rW   rX  r   r   r   r-   r-   r.   %test_constantofshape_with_input_shape  .   z8TestShapeInference.test_constantofshape_with_input_shapec                 C  R   |  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 )
Nr   r   r[  r   rH  r  r   rG  r%  r`   r   rW   r   r   r   r   r   r   r-   r-   r.   (test_constantofshape_without_input_shape     z;TestShapeInference.test_constantofshape_without_input_shapec                 C  r_  )
Nr   r  r[  r   rH  r  r   rG  r-   r`  r   r-   r-   r.   /test_constantofshape_without_input_shape_scalar  rb  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 )
NrF  r   r  r  rG  r[  r   rH  r   r\  r   r-   r-   r.   $test_constantofshape_with_shape_zero  r^  z7TestShapeInference.test_constantofshape_with_shape_zeroc                 C  s`   |  dtjdfdtjdfgtdddgdg dg dg d	d
gg }| |tdtjdg d S )NrJ   r-  r   r.  ConvIntegerr   r0  r  r1  r2  r3  r`   r   r   r   r   r   rX  r   r-   r-   r.   test_convinteger8  r5  z#TestShapeInference.test_convintegerc              	   C  sh   |  dtjdfdtjdfdtjdfdtjdfgtdg d	d
g ddgg }| |td
tjdg d S )NrJ   r;  r   r<  x_zero_pointr-   y_zero_pointre  rJ   r   rh  ri  r   r=  r  r>  r`   r   r   INT8r   r   r   rX  r   r-   r-   r.   test_convinetger_dilationsN  $   



z-TestShapeInference.test_convinetger_dilationsc              	   C  sh   |  dtjdfdtjdfdtjdfdtjdfgtdg d	d
g ddgg }| |td
tjdg d S )NrJ   r;  r   r<  rh  r-   ri  re  rj  r   r=  r
  rA  )r`   r   rl  r   r   r   r   rX  r   r-   r-   r.   test_convinteger_stridesd  rn  z+TestShapeInference.test_convinteger_stridesc              	   C  sT   |  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 )
NrJ   rC  r   r<  re  r   rD  r  rE  rk  r   r-   r-   r.   test_convineteger_padsz  r@  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 )
NrJ   r;  r   rU  re  r   r   rV  rX  )r`   r   rl  r   r   r   rX  r   r-   r-   r.   test_convineteger_group  rL  z*TestShapeInference.test_convineteger_groupc              	   C  sh   |  dtjdfdtjdfdtjdfdtjdfgtdg d	d
g ddgg }| |td
tjdg d S )NrJ   r[  r   r<  rh  r-   ri  re  rj  r   rD  r  r\  rf  r   r-   r-   r.   'test_convineteger_partial_missing_shape  s&   



z:TestShapeInference.test_convineteger_partial_missing_shapec              	   C  sT   |  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 )	NrJ   rC  r   r^  re  r   rD  r  rf  r   r-   r-   r.   .test_convineteger_partial_missing_weight_shape  r@  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g ddg dg dg ddgg }| |tdtjdg d S )NrJ   r-  x_scaler-   rh  r  r.  w_scalew_zero_pointy_scaleri  QLinearConvrJ   rt  rh  r  ru  rv  rw  ri  r   r0  r  r1  r2  r3  r`   r   r   r   r   r   r   r   r-   r-   r.   test_qlinearconv  s0   








 z#TestShapeInference.test_qlinearconvc                 C     |  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g ddg ddgg }| |tdtjdg d S )NrJ   r;  rt  r-   rh  r  r<  ru  rv  rw  ri  rx  ry  r   r=  r  r>  rz  r   r-   r-   r.   test_qlinearconv_dilations  ,   








z-TestShapeInference.test_qlinearconv_dilationsc                 C  r|  )NrJ   r;  rt  r-   rh  r  r<  ru  rv  rw  ri  rx  ry  r   r=  r
  rA  r`   r   rl  r   r   r   r   r   r-   r-   r.   test_qlinearconv_strides   r~  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g ddg ddgg }| |tdtjdg d S )NrJ   rC  rt  r-   rh  r  r<  ru  rv  rw  ri  rx  ry  r   rD  r  rE  )r`   r   r   r   rl  r   r   r   r   r-   r-   r.   test_qlinearconv_pads#  r~  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g ddddgg }| |tdtjdg d S )NrJ   r;  rt  r-   rh  r  rU  ru  rv  rw  ri  rx  ry  r   r   rV  rX  r  r   r-   r-   r.   test_qlinearconv_groupF  s,   








z)TestShapeInference.test_qlinearconv_groupc                 C  r|  )NrJ   r[  rt  r-   rh  r  r<  ru  rv  rw  ri  rx  ry  r   rD  r  r\  rz  r   r-   r-   r.   &test_qlinearconv_partial_missing_shapei  s.   








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g ddg ddgg }| |tdtjd g d S )NrJ   rC  rt  r-   rh  r  r^  ru  rv  rw  ri  rx  ry  r   rD  r  rz  r   r-   r-   r.   -test_qlinearconv_partial_missing_weight_shape  r~  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
g ddggg }| |tdtj|g d S Nr   a_scaler-   a_zero_pointr   b_scaleb_zero_pointrw  ri  QLinearMatMul)r   r  r  r   r  r  rw  ri  r   )r   r   r   r   r   r   r`   r   r   r   r   r   r   rY   r   r   r   ry   r-   r-   r.   _make_qlinearmatmul_test  s6   








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     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
g ddggg }| |tdtj|g d S r  rz  r  r-   r-   r.   &_make_qlinearmatmul_test_allow_unknown  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g ddggg }| 
|tdtj|g d S )	NArb  r  r-   r  MatMulInteger)r  rb  r  r  r   )r   r   r   r   r   r   r`   r   r   r   r   r   rX  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+  r  z%TestShapeInference.test_matmulintegerc                 C  sT   |  d|dfd|dfdtjdfgtdg ddggg }| |tdtjdg d S )	NrJ   r   rw  r-   ri  QuantizeLinearrJ   rw  ri  r   r`   r   r   r   r   r   rY   r   ry   r-   r-   r.   test_quantizelinear3  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 )NrJ   r   rw  r-   r  r   r`   r   r   r   r   r   r   r   r-   r-   r.   test_quantizelinear_default_zpD  r5  z1TestShapeInference.test_quantizelinear_default_zpc                 C  sN   |  dtjdfdtjdfgtdg ddggg }| |tdtjdg d S )NrJ   r   rw  r-   r  )rJ   rw  r  r   r  r   r-   r-   r.   "test_quantizelinear_optional_inputN  r5  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 NrJ   r  rw  r-   r  r   output_dtype)r`   r   r   r   UINT4r   r   r   r-   r-   r.    test_quantizelinear_output_dtypeX  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g ddgtjd	gg }| |tdtjdg d S 
NrJ   r  rw  r-   ri  r  r  r   r  )r`   r   r   UINT16r   r   r   r   r-   r-   r.   #test_quantizelinear_zp_output_dtypei  s"   


z6TestShapeInference.test_quantizelinear_zp_output_dtypec              	   C  sZ   |  dtjdfdtjdfdtjdfgtdg ddgtjd	gg }| tjj	| j
| d S r  )r`   r   r   r  r   INT4r   ri   rj   r   ro   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  )
r`   r   r   r   r   r   ri   rj   r   ro   r   r-   r-   r.   (test_quantizelinear_invalid_output_dtype  s    z;TestShapeInference.test_quantizelinear_invalid_output_dtypec                 C  sT   |  dtjdfd|dfdtjdfgtdg ddggg }| |td|dg d S )	NrJ   r   rt  r-   rh  DequantizeLinear)rJ   rt  rh  r   r  r  r-   r-   r.   test_dequantizelinear  s   

	z(TestShapeInference.test_dequantizelinearc              	   C  s\   |  dtjdfgtddgg dgg }| |tdtjdtdtjdtdtjdg d S )	NrJ   r   DynamicQuantizeLinear)r   rw  ri  r   rw  r-   ri  r  r   r-   r-   r.   test_dynamicquantizelinear  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 )NrJ   r  sequence_lensr   ReverseSequencer   r  r   r-   r-   r.   test_reversesequence  r  z'TestShapeInference.test_reversesequencec              
   C  sh   |  dtjdfgtddgg 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   rM   r   rM   Uniquer   r  inverse_indicescountsr   rP   r  r  r  rQ  r   r-   r-   r.   test_unique_without_axis  s   z+TestShapeInference.test_unique_without_axisc              
   C  sl   |  dtjdfgtddgg 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
g d S )Nr   r  r  r  r   r!  r   )rM   NrM   r  rP   r  r  rQ  r   r-   r-   r.   test_unique_with_axis  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  Detr   r-   )r   r7   r  r   r   r  r   r   r-   r-   r.   test_det  s   zTestShapeInference.test_detc              	   C  `   | 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 )
NrJ   r  repeatsr   Tiler   r=  r  r   r  r  r  r   r-   r-   r.   	test_tile     zTestShapeInference.test_tilec                 C  sv   | 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g ddd	 d
dgd}| 	|t
dtjdg d S )NrJ   r  r  r   r  r   r=  rt  rf  Trh  r  r  r  r   r-   r-   r.   test_tile_raw_input_data!  s    z+TestShapeInference.test_tile_raw_input_datac                 C  N   |  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 )NrJ   r  r  r   r  r   r%  r  r   r-   r-   r.   test_tile_rank_inference4  r5  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 )NrJ   r   LinearClassifierr   r   g-C6J?g-C6Jrc  r   rM   r*   coefficients
interceptsclasslabels_intsr  r   r}  r   
r`   r   r   r   r   r   r   rW   r   r   r   r-   r-   r.   test_linearclassifier_1D_input>  .   
z1TestShapeInference.test_linearclassifier_1D_inputc                 C  sz   |  dtjdfgtddgddgtg dg dg d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 )NrJ   r  r  r   r   )皙?皙?g333333?皙?r\  g333333?)rc  rc  g      @r=  r  rT  r  r   r}  r   r  r   r-   r-   r.   test_linearclassifier_2D_input[  r  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g dd	gd
ddgg }| |td	tjdg d S )NrJ   r  r  num_roisr   batch_indicesr  RoiAlignrJ   r  r  r   r  r7   )output_heightoutput_width)r  r  r  r7   r  r   r-   r-   r.   test_roialign_symbolicx  s&   


	z)TestShapeInference.test_roialign_symbolicc                 C  X   |  dtjdfdtjdfdtjdfgtdg dd	ggg }| |td	tjd
g d S )NrJ   r  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  r  )NrJ   r  r  r  r  )r  r  r  r   )r  r  r   r   r  r   r-   r-   r.   test_roialign_num_rois  r  z)TestShapeInference.test_roialign_num_roisc                 C  sb   |  dtjdfdtjdfdtjdfdtjdfgtdg d	d
ggg }| |td
tjdg d S )Nr   )rb  	num_headsr  re  	cos_cachemax_seq_lenhead_size_div_2	sin_cacheposition_idsrb  r  RotaryEmbeddingr   r  r  r  r   r  r   r-   r-   r.   test_rotaryembedding_4d  s*   



z*TestShapeInference.test_rotaryembedding_4dc              	   C  sf   |  dtjdfdtjdfdtjdfdtjdfgtdg d	d
gddgg }| |td
tjdg d S )Nr   )rb  r  r  r  r  r  r  r  r  r  r   r   )r  r  r   r-   r-   r.   test_rotaryembedding_3d  s,   



z*TestShapeInference.test_rotaryembedding_3dLabelEncoderT)skip_on_emptyc                 C  sH  |  |dk d g d}g 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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 )NrM   z7keys_* attributes were introduced in ai.onnx.ml opset 2)r  mr   )g{GW@g      B@g     X)r     V   rJ   r  r   r  r   )r*   keys_stringsvalues_int64sr}  r   r   )r*   keys_int64svalues_stringsr   )r*   keys_floatsr  r  )r*   r  values_floatsr-   )r*   r  r  r   )r*   r  r  )r   r`   r   r   r   r   r   r   rW   r   r   r   )rY   r   r,   string_list
float_list
int64_listry   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g d}tdtjdgg d}| 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_tensorr   r   ccdddvalues_tensorr   rM   r   r   rJ   r3  Nr   r  r  r   default_tensorr   r   r*   r  r  r  r}  r   )r   r   r   r   rW   r`   r   r   r   r   r   r   )rY   r   r,   
key_tensorr  ry   r-   r-   r.   $test_label_encoder_tensor_attributesu  s@   
z7TestShapeInference.test_label_encoder_tensor_attributesc                 C  s  |  |dk d tdtjdgg d}tdtjdgg d}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|g d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}  rJ   r  r  r   r  r   r   r  r   rM   )r*   r  r  r  )r   r   r   r   rW   r   r   r   r`   r   r   ri   rj   r   ro   )rY   r   r,   r  r  r   ry   r-   r-   r.   ;test_label_encoder_tensor_attributes_invalid_configurations  sl   
zNTestShapeInference.test_label_encoder_tensor_attributes_invalid_configurationsr   rA  indices_shaper  r   c                 C  sT   t  }|j| t|}|jtdtj	|f| |j
tdtj	|| |S )Nspvalspind)r   dimsextendr{   rA  CopyFromr   r   r   rW   r  )rY   r   rA  r  r  sparsennzr-   r-   r.   make_sparse  s   zTestShapeInference.make_sparsec              	   C  sZ   dg}|  |g ddgg d}| g tdg dg|dgg }| |tdtj|g d S )Nr  )r2  r3     r   )r	     Q   rF  r   )sparse_value)r	  r`   r   r   r   r   rW   )rY   y_shapey_valuery   r-   r-   r.   test_constant_sparse  s   z'TestShapeInference.test_constant_sparsec              	   C  :   |  g tdg dgddgg }| |tdtjg g d S )NrF  r   *   )	value_int)r`   r   r   r   r   rW   r   r-   r-   r.   test_constant_value_int     z*TestShapeInference.test_constant_value_intc              	   C  H   g d}|  g tdg dg|dgg }| |tdtjt|gg d S )Nr=  rF  r   )
value_ints)r`   r   r   r   r   rW   r{   )rY   r  ry   r-   r-   r.   test_constant_value_ints     z+TestShapeInference.test_constant_value_intsc              	   C  r  )NrF  r   gQ?)value_float)r`   r   r   r   r   r   r   r-   r-   r.   test_constant_value_float  r  z,TestShapeInference.test_constant_value_floatc              	   C  r  )N)rM  rN  g333333?rF  r   )value_floats)r`   r   r   r   r   r   r{   )rY   r  ry   r-   r-   r.   test_constant_value_floats  r  z-TestShapeInference.test_constant_value_floatsc              	   C  r  )NrF  r   zString value)value_string)r`   r   r   r   r   r   r   r-   r-   r.   test_constant_value_string!  r  z-TestShapeInference.test_constant_value_stringc              	   C  r  )N)onr!  rJ   rF  r   )value_strings)r`   r   r   r   r   r   r{   )rY   r"  ry   r-   r-   r.   test_constant_value_strings)  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g d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-   limitdeltaRanger  r$  r%  r  r  r   r   r  )r`   r   r   r   r   r   r   r   r-   r-   r.   
test_range3  s   


zTestShapeInference.test_rangec              
   C  sx   | j dtjdfdtjdfdtjdfgtdg d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  rP   )r`   r   rX  r   r   r   r   r   r-   r-   r.   test_range_rank_inferenceF  r  z,TestShapeInference.test_range_rank_inferencec                 C  r  )NrJ   r  r  r   GatherNDr   r  r  r   r-   r-   r.   test_gatherndX  r5  z TestShapeInference.test_gatherndc              	   C  R   |  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 )
NrJ   r)  r  r   r*  r   r   )
batch_dimsr  r  r   r-   r-   r.   test_gathernd_batchdim_1b  r9  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 )NrJ   r   r"  r  CumSumr   r   r   r-   r-   r.   test_cumsumo  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 )Nboxesr   r   r   scores)r   r7   r   NonMaxSuppressionr   rV  rQ  r   r-   r-   r.   test_nonmaxsuppressiony  r  z)TestShapeInference.test_nonmaxsuppressionc                 C  s6   |  g tdg dggg }| |tdtjd g d S )NSequenceEmptyr  )r`   r   r   r   r   r   r   r-   r-   r.   test_sequence_empty  s   z&TestShapeInference.test_sequence_emptyc                 C  r  )Nr  r   r  r  r  r  r  r  r   r-   r-   r.   test_sequence_construct  (   


z*TestShapeInference.test_sequence_constructc                 C  r  )Nr  r   r  r  r  r   r-   r-   r.   !test_sequence_construct_one_input  s   z4TestShapeInference.test_sequence_construct_one_inputc                 C  sX   |  dtjdfdtjdfdtjdfgtdg d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_sequence_construct_diff_rank  r:  z4TestShapeInference.test_sequence_construct_diff_rankc                 C  r`  )Nr  r   r  rF  r  rp  r  r  r  rM   r   Nr  r   r-   r-   r.   %test_sequence_construct_diff_dim_size  r:  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g d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  r  SequenceInsertr  r  r   r-   r-   r.   test_sequence_insert  2   



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g d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_insert_diff_rank  rB  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g d	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?  rM   r7   rM   r  r  r  r@  r  r  rM   NNr  r   r-   r-   r.   test_sequence_insert_diff_shape"  rB  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g d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  r  
SequenceAtr  r`   r   r   rW   r   r   r   r   r   r-   r-   r.   test_sequence_at@  *   



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g d	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  rG  r-   r  r  r  rH  r  rI  r   r-   r-   r.   test_sequence_at_unknown_shapeZ  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g d	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  rF  r  rG  r-   r  r  r  rH  r  r=  rI  r   r-   r-   r.   !test_sequence_at_unknown_dim_sizer  rK  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g d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  rG  r-   r  r  r  SequenceEraser  r`   r   r   rW   r   r   r   r   r-   r-   r.   test_sequence_erase  .   



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g d	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  rM   r   rJ   r  r  )rM   r7   rJ   rG  r-   r  r  r  rN  r  rM   NrJ   rO  r   r-   r-   r.   !test_sequence_erase_diff_dim_size  rQ  z4TestShapeInference.test_sequence_erase_diff_dim_sizec                 C  sr   |  dtjdfdtjdfdtjdfgtdg ddgtddgd	ggg }| |tdtjdtd	tjd
g d S )Nr  rR  r  r  r  r  r  SequenceLengthr{   r-   )r`   r   r   r   r   r   r   rW   r   r-   r-   r.   test_sequence_length  s(   


z'TestShapeInference.test_sequence_lengthc              	   C  r  )
Nr   r  r   rr  r   SplitToSequencer  r  r  ru  r`   r   r   rX  r   r   r   r   r   r-   r-   r.   test_split_to_sequence     z)TestShapeInference.test_split_to_sequencec              	   C  r  )
Nr   rW  rr  r-   rX  r  r   r  r   rY  r   r-   r-   r.   test_split_to_sequence_scalar  r[  z0TestShapeInference.test_split_to_sequence_scalarc              	   C  r  )Nr   rW  rX  r  r   r@  r(  r  r   r-   r-   r.   test_split_to_sequence_keepdims     z2TestShapeInference.test_split_to_sequence_keepdimsc              	   C  r  )Nr   rW  rX  r  r   r@  rT  r  r   r-   r-   r.   #test_split_to_sequence_not_keepdims  r^  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   rW  rr  r   rX  r  r   r@  r  r  ru  rY  r   r-   r-   r.   &test_split_to_sequence_ignore_keepdims  s&   z9TestShapeInference.test_split_to_sequence_ignore_keepdimsc              	   C  r  )Nr   rW  rX  r  r   r!  r  r  r   r-   r-   r.   test_split_to_sequence_axis2  r^  z.TestShapeInference.test_split_to_sequence_axisc              	   C  r  )Nr   rW  rX  r  r&  r!  r(  r  r   r-   r-   r.   test_split_to_sequence_neg_axisA  r^  z2TestShapeInference.test_split_to_sequence_neg_axisc              	   C  r  )
Nr   rW  rr  r   rX  r  r|  r  Nr   rY  r   r-   r-   r.   "test_split_to_sequence_split_sizesP  r[  z5TestShapeInference.test_split_to_sequence_split_sizesc              	   C  r  )
Nr   rW  rr  r-   rX  r  rT  r  rc  rY  r   r-   r-   r.   $test_split_to_sequence_non_divisible`  r[  z7TestShapeInference.test_split_to_sequence_non_divisiblec              
   C  sv   |  dtjdfdtjdfdtjdfgtdg d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  rR  r  r  r  r  r  ConcatFromSequencer'  r   r!  )Nr   rJ   r`   r   r   r   r   r   r   r   r-   r-   r.   test_concat_from_sequencep  (   


z,TestShapeInference.test_concat_from_sequencec              
   C  sv   |  dtjdfdtjdfdtjdfgtdg d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  rR  r  r   r  r  r  r  rf  r'  r   r!  rg  r   r-   r-   r.   'test_concat_from_sequence_unknown_shape  s$   


z:TestShapeInference.test_concat_from_sequence_unknown_shapec              
   C  v   |  dtjdfdtjdfdtjdfgtdg d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  rR  r  rM   r   rJ   r  r  r  r  rf  r'  r   r!  rS  NNrJ   rg  r   r-   r-   r.   *test_concat_from_sequence_unknown_dim_size  ri  z=TestShapeInference.test_concat_from_sequence_unknown_dim_sizec              
   C  rk  )Nr  rR  r  rl  r  r  r  r  rf  r'  rM   r!  rS  rE  rg  r   r-   r-   r.   test_concat_from_sequence_axis  ri  z1TestShapeInference.test_concat_from_sequence_axisc              
   C  rk  )Nr  rR  r  rl  r  r  r  r  rf  r'  r!  rS  rm  rg  r   r-   r-   r.   "test_concat_from_sequence_neg_axis  ri  z5TestShapeInference.test_concat_from_sequence_neg_axisc                 C  x   |  dtjdfdtjdfdtjdfgtdg d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  rR  r  r  r  r  r  rf  r'  rM   r   r"  new_axis)rM   r   NrJ   rg  r   r-   r-   r.   "test_concat_from_sequence_new_axis  ,   


z5TestShapeInference.test_concat_from_sequence_new_axisc                 C  rr  )Nr  rR  r  r  r  r  r  rf  r'  r#   r   rs  )rM   r   rJ   Nrg  r   r-   r-   r.   &test_concat_from_sequence_neg_new_axis  rv  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g d	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)rx  ry  r   rz  r  X_newH_newr8   r  r   r   r`   r   r   rW   r   r   r   r   r   r   r   r   r-   r-   r.   test_adagrad!  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g dg 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 )Nrx  r-   ry  X1r   X2ru  G1G2H1H2r{  )rx  ry  r  r  r  r  r  r  )X1_newX2_newH1_newH2_newr8   r  r  r  r  r  r   r   r~  r   r-   r-   r.   test_adagrad_multipleA  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g d	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 )Nrx  r-   ry  r   r   rz  ri  Momentum)rx  ry  r   rz  ri  r|  V_new?rM  {Gz?standardr]  r^  norm_coefficientr  r*   r  r   r   r~  r   r-   r-   r.   test_momentumf  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g dg d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 )Nrx  r-   ry  r  r   r  ru  r  r  V1V2r  )rx  ry  r  r  r  r  r  r  )r  r  V1_newV2_newr  rM  r  nesterovr  r  r  r  r  r  r   r   r~  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	g d
g d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 )Nrx  r-   ry  r   r   rz  ri  r  Adam)rx  ry  r   rz  ri  r  )r|  r  r}  r  rM  r  r*   r]  r^  r  r|  r  r}  r   r  r   
r`   r   r   rW   r   r   r   r   r   r   rY   ry   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g dg d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 )Nrx  r-   ry  r  r   r  ru  r  r  r  r  r  r  r  )
rx  ry  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  rM  r  r  r  r  r  r  r  r  r   r  r   r  r  r-   r-   r.   test_adam_multiple  sL   









	
z%TestShapeInference.test_adam_multiplec              	   C  sT   |  dtjdfgtdddg ddgg }| j|tdtjdgttdgd	 d S )
NrJ   r   NrM   Padr   r   r   r   r   r   r   r  r   Nr   r  r   r   r   r-   r-   r.   test_pad_opset10  s   
z#TestShapeInference.test_pad_opset10c                 C  sX   |  dtjdfgtdddg ddddgg }| j|tdtjd	gttd
gd d S )NrJ   )rM   r   r   r   r  r   )r   r   r   r   r   r   r   rM   constantrc  )r  r  rH  )rM   r   r}  r   r  r   r   r   r-   r-   r.   test_constant_pad_2d_opset10  s$   

z/TestShapeInference.test_constant_pad_2d_opset10c              	   C  r  )
NrJ   r  r  r+  r  r   r  r  r  r  r   r-   r-   r.   test_pad(  s   zTestShapeInference.test_padc                 C  N   |  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 )NrJ   r+  r  r   r  r   r  r   r-   r-   r.   test_gatherelements_basicA  r5  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 )NrJ   r+  r  r  r   r  r   r-   r-   r.   )test_gatherelements_indices_missing_shapeK  r  z<TestShapeInference.test_gatherelements_indices_missing_shapec              	   C  r  )NrJ   ru  Einsumr   zij->jiequationr  r   r   r-   r-   r.   test_einsum_transposeX  r   z(TestShapeInference.test_einsum_transposec              	   C  R   |  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 )	NrJ   r  r   r  r   i,i->r  r-   r   r   r-   r-   r.   test_einsum_dotb     z"TestShapeInference.test_einsum_dotc              	   C  R   |  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 )NrJ   r-   r   r  r   z,->r  r   r   r-   r-   r.   test_einsum_scalarl  r  z%TestShapeInference.test_einsum_scalarc              	   C  R   |  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 )
NrJ   r  r   )r   r	  r  r   zij,ab->ijabr  )r   r7   r   r	  r   r   r-   r-   r.   test_einsum_outer_prodv  r  z)TestShapeInference.test_einsum_outer_prodc              	   C  r  )NrJ   ru  r  r   zi j->i r  r   r   r   r-   r-   r.   test_einsum_sum_along_dim  r   z,TestShapeInference.test_einsum_sum_along_dimc              	   C  r  )NrJ   )r   r   r   r  r   z... ii ->... ir  ru  r   r   r-   r-   r.   test_einsum_ellipsis  r   z'TestShapeInference.test_einsum_ellipsisc              	   C  r  )
NrJ   r   r   rM   r   r7   r  r   ...ij,...jk->...ikr  rF  r   r   r-   r-   r.   test_einsum_ellipsis_2  r  z)TestShapeInference.test_einsum_ellipsis_2c              	   C  r  )
NrJ   r   r   r  r  r   z...ij,...jkr  rF  r   r   r-   r-   r.   test_einsum_ellipsis_3  r  z)TestShapeInference.test_einsum_ellipsis_3c              	   C  r  )
NrJ   r3  r   )r  r   r7   r  r   r  r  )r  r   r7   r   r   r-   r-   r.   test_einsum_ellipsis_broadcast  r  z1TestShapeInference.test_einsum_ellipsis_broadcastc              	   C  r  )
NrJ   )r7   r  r   r9  r   )r9  r	  r  r  r   zabcd,dfg->abcfgr  )r7   r  r   r	  r  r   r   r-   r-   r.   test_einsum_contraction     

z*TestShapeInference.test_einsum_contractionc              	   C  r  )
NrJ   r  r   r  r  r   z
ijk,ik->jkr  r  r   r   r-   r-   r.   test_einsum_contraction_2  r  z,TestShapeInference.test_einsum_contraction_2c              	   C  r  )
NrJ   )r7   rM   r   r   )r7   r   r   r  r   zbij , b jk-> bikr  )r7   rM   r   r   r   r-   r-   r.   test_einsum_batch_matmul  r  z+TestShapeInference.test_einsum_batch_matmulc              	   C  r  )
NrJ   r   r   ru  r  r   zij,klr  )rM   r   r   r   r   r   r-   r-   r.   test_einsum_left_hand_eqn  r  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 )NrJ   r   r   r   r  zi,...j, k, l-> ir  r   r   r-   r-   r.    test_einsum_incorrect_num_inputs  s   


	z3TestShapeInference.test_einsum_incorrect_num_inputsc              	   C  F   |  dtjdfgtddgdgddgg }| |tdtjdg d S )NrJ   r   r  r   r  r  r   r   r-   r-   r.   test_einsum_view_A1  r   z&TestShapeInference.test_einsum_view_A1c              	   C  r  )NrJ   r   r  r   zi->r  r-   r   r   r-   r-   r.   test_einsum_sum_A1  r   z%TestShapeInference.test_einsum_sum_A1c              	   C  r  )NrJ   r   r   r  r   zi,i->ir  r   r   r-   r-   r.   -test_einsum_element_wise_multiplication_A1_B1     z@TestShapeInference.test_einsum_element_wise_multiplication_A1_B1c              	   C  r  )	NrJ   r   r   r  r   r  r  r-   r   r   r-   r-   r.   test_einsum_inner_product_A1_B1
  r  z2TestShapeInference.test_einsum_inner_product_A1_B1c              	   C  r  )	NrJ   r   r   r  r   zi,j->ijr  r  r   r   r-   r-   r.   test_einsum_outer_product_A1_B1  r  z2TestShapeInference.test_einsum_outer_product_A1_B1c              	   C  r  )NrJ   r  r  r   zij->ijr  r   r   r-   r-   r.   test_einsum_view_A2  r   z&TestShapeInference.test_einsum_view_A2c              	   C  r  )NrJ   r  r  r   ijr  r   r   r-   r-   r.   test_einsum_view_A2_2(  r   z(TestShapeInference.test_einsum_view_A2_2c              	   C  r  )NrJ   r  r  r   jir  r   r   r-   r-   r.   test_einsum_transpose_A22  r   z+TestShapeInference.test_einsum_transpose_A2c              	   C  r  )NrJ   r  r  r   zji->ijr  r   r   r-   r-   r.   test_einsum_transpose_A2_to_ij<  r   z1TestShapeInference.test_einsum_transpose_A2_to_ijc              	   C  r  )NrJ   r  r  r   zii->ir  r   r   r   r-   r-   r.   test_einsum_diag_A2F  r   z&TestShapeInference.test_einsum_diag_A2c              	   C  r  )NrJ   r  r  r   zii->r  r-   r   r   r-   r-   r.   test_einsum_trace_A2P  r   z'TestShapeInference.test_einsum_trace_A2c              	   C  r  )NrJ   r  r  r   zij->r  r-   r   r   r-   r-   r.   test_einsum_sum_A2Z  r   z%TestShapeInference.test_einsum_sum_A2c              	   C  r  )NrJ   r  r  r   zij->jr  r   r   r   r-   r-   r.   test_einsum_sum_columns_A2d  s   z-TestShapeInference.test_einsum_sum_columns_A2c              	   C  r  )NrJ   r  r  r   zij->ir  r   r   r   r-   r-   r.   test_einsum_sum_rows_A2p  r   z*TestShapeInference.test_einsum_sum_rows_A2c              	   C  r  )NrJ   r  r   r  r   z	ij,ij->ijr  r   r   r-   r-   r.   -test_einsum_element_wise_multiplication_A2_B2z  r  z@TestShapeInference.test_einsum_element_wise_multiplication_A2_B2c              	   C  r  )NrJ   r  r   r  r   z	ij,ji->ijr  r   r   r-   r-   r.   7test_einsum_element_wise_multiplication_A2_B2_transpose  r  zJTestShapeInference.test_einsum_element_wise_multiplication_A2_B2_transposec              	   C  r  )NrJ   r  r   r  r   zij,jkr  r   r   r-   r-   r.   'test_einsum_matrix_multiplication_A2_B2  r  z:TestShapeInference.test_einsum_matrix_multiplication_A2_B2c              	   C  r  )NrJ   r  r   r  r   z	ij,jk->ikr  r   r   r-   r-   r.   -test_einsum_matrix_multiplication_A2_B2_to_ik  r  z@TestShapeInference.test_einsum_matrix_multiplication_A2_B2_to_ikc              	   C  r  )NrJ   r{  r   r  r   zbij,bjk->bikr  r   r   r-   r-   r.   'test_einsum_matrix_multiplication_A3_B3  r  z:TestShapeInference.test_einsum_matrix_multiplication_A3_B3c              	   C  r  )NrJ   r{  r   r  r   zbij,bkj->bikr  r   r   r-   r-   r.   1test_einsum_matrix_multiplication_A3_B3_transpose  r  zDTestShapeInference.test_einsum_matrix_multiplication_A3_B3_transposec              	   C  r  )NrJ   r  r   r  r   z	ij,kj->ikr  r   r   r-   r-   r.   test_einsum_inner_product_A2_B2  r  z2TestShapeInference.test_einsum_inner_product_A2_B2c              	   C  r  )	NrJ   r  r   r  r   z
ij,kj->ikjr  )r   r   r   r   r   r-   r-   r.   $test_einsum_row_multiplication_A2_B2  r  z7TestShapeInference.test_einsum_row_multiplication_A2_B2c              	   C  r  )	NrJ   r  r   r  r   zij,kl->ijklr  )r   r   r   r   r   r   r-   r-   r.   &test_einsum_value_multiplication_A2_B2  r  z9TestShapeInference.test_einsum_value_multiplication_A2_B2c              	   C  R   |  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 )	NrJ   r-   r   r  r  r   z,ij->ijr  r   r   r-   r-   r.   test_einsum_scalar_times_array  r  z1TestShapeInference.test_einsum_scalar_times_arrayc              	   C  r  )	NrJ   r  r   r   r  r   zij,j->ir  r   r   r-   r-   r.   test_einsum_matrix_vector_A2_B1  r  z2TestShapeInference.test_einsum_matrix_vector_A2_B1c              	   C  r  )	NrJ   r  r   r  r   zii,ii->ir  r   r   r   r-   r-   r.   %test_einsum_diag_multiplication_A2_B2  r  z8TestShapeInference.test_einsum_diag_multiplication_A2_B2c              	   C  r  )	NrJ   r  r   r  r   zii,ii->r  r-   r   r   r-   r-   r.   "test_einsum_diag_dot_product_A2_B2  r  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 )Nru  r   targetNegativeLogLikelihoodLosslossnone	reductionr  rY   r   r  ry   r-   r-   r.   (test_negative_log_likehood_shape_is_NCdd  s   z;TestShapeInference.test_negative_log_likehood_shape_is_NCddc              	   C  sn   d\}}|  dtj||ffdtj|ffdtj|ffgtdg ddgdd	gg }| |tdtj|fg d S )
Nru  r   r  weightr  r   r  r  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 )	Nru  r   r  r  r  rb  r  r-   r  r  r-   r-   r.   5test_negative_log_likehood_shape_is_NC_reduction_mean6  s   zHTestShapeInference.test_negative_log_likehood_shape_is_NC_reduction_meanc              	   C  sl   d\}}|  dtj||ffdtj|ffdtj|ffgtdg ddgdd	gg }| |tdtjd
g d S )Nru  r   r  r  r  r  r  rb  r  r-   r  r  r-   r-   r.   Atest_negative_log_likehood_shape_is_NC_with_weight_reduction_meanH  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   r7   r  r   r  r  r  r  r  r  rY   r   r  d1d2ry   r-   r-   r.   *test_negative_log_likehood_shape_is_NCd1d2^  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g d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-   r.   6test_negative_log_likehood_shape_is_NCd1d2_with_weights  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_sum  s"   zKTestShapeInference.test_negative_log_likehood_shape_is_NCd1d2_reduction_sumc              	   C  sx   d\}}}}|  dtj||||ffdtj|||ffdtj|ffgtdg ddgd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.   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g d	dgd
dgg }| tjj| j	| d S )Nr  r   r  r   r  r  r-   r  r  rb  r  )
r`   r   r   rW   r   r   ri   rj   r   ro   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g ddgd	d
gg }| tj| j| d S )Nr  r   r  r  r   r  r  r  r  r  )	r`   r   r   rW   r   r   r   r]  ro   r  r-   r-   r.   6test_negative_log_likehood_input_weight_shape_mismatch  s"   zITestShapeInference.test_negative_log_likehood_input_weight_shape_mismatchc              	   C  r  )	NrJ   r   r   r   SoftmaxCrossEntropyLossr   r  r  r   r   r-   r-   r.   test_softmax_cross_entropy_none  r  z2TestShapeInference.test_softmax_cross_entropy_nonec              	   C  r  )
NrJ   r   r   r   r  r   rb  r  r-   r   r   r-   r-   r.   test_softmax_cross_entropy_mean  r  z2TestShapeInference.test_softmax_cross_entropy_meanc              	   C  r  )	NrJ   )rM   r   r7   r9  r   )rM   r7   r9  r  r   r  r  r   r   r-   r-   r.   &test_softmax_cross_entropy_none_NCD1D2  r9  z9TestShapeInference.test_softmax_cross_entropy_none_NCD1D2c              	   C  r  )
NrJ   r  r   r  r  r   rb  r  r-   r   r   r-   r-   r.   &test_softmax_cross_entropy_mean_NCD1D2  r9  z9TestShapeInference.test_softmax_cross_entropy_mean_NCD1D2c              	   C  r  )Nr   r  Celur   rc  )r]  r   r   r-   r-   r.   test_celu_function_output_shape  r   z2TestShapeInference.test_celu_function_output_shapec           
      C  s   t dddgdg}|d u rg }n$d}|D ]}|| }qdd t|D }tdtj||tdtj||g}|d u r;g }ntdtj|tdtj|g}tj|d|g |g d	}	t|	S )
Nr  rJ   r   r   r   c                 S  s   g | ]}d qS )        r-   )r1   r  r-   r-   r.   r9      s    zHTestShapeInference.prepare_input_initializer_tensors.<locals>.<listcomp>rR   )inputsoutputsrE   rC   )	r   r%   r   r   r   r   r   rX   rh   )
rY   initializer_shapeinput_shaperA   rE   r_  dri  r  ry   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.J d S )Nr9  r   Tr  r   r   )r	  ri   rj   rk   ry   rC   rg   r~   r   r   r   r   )rY   r  original_modelrn   z_tenorz_shaper-   r-   r.   3test_infer_with_initializer_without_input_above_ir47  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s3J d S )	Nr
  r0  r   Tr  r   r   r   r   )r	  
ir_versionri   rj   rk   ry   rC   rg   r~   r   r   r   r   )rY   r  r  r  rn   r  r  r-   r-   r.   3test_infer_with_initializer_without_input_below_ir4H  s   zFTestShapeInference.test_infer_with_initializer_without_input_below_ir4c                 C  2   d}d}|  ||}| jtjjtjj|dd d S )Nr
  r  Tr  r	  r   ri   rj   r   rk   rY   r  r  r  r-   r-   r.   %test_infer_initializer_input_mismatch^  s   
z8TestShapeInference.test_infer_initializer_input_mismatchc                 C  (   d}d}|  ||}tjj|dd d S Nr
  r0  Tr  r	  ri   rj   rk   r  r-   r-   r.   1test_infer_initializer_input_consistency_all_nonem     zDTestShapeInference.test_infer_initializer_input_consistency_all_nonec                 C  r  )Nr
  Nr   Tr  r  r  r-   r-   r.   4test_infer_initializer_input_consistency_single_nonev  r  zGTestShapeInference.test_infer_initializer_input_consistency_single_nonec                 C  r  )N)r9  r   r	  r  Tr  r  r  r-   r-   r.   6test_infer_initializer_input_consistency_differnt_rank  s   
zITestShapeInference.test_infer_initializer_input_consistency_differnt_rankc                 C  s,   d}d}|  ||}tjj| dd d S r  )r	  ri   rj   rk   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 )	NrJ   r  r  r-   Trilur   r   r  r  r   r-   r-   r.   test_trilu_upper  r  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 )NrJ   r  r  r-   r   r   r   upperr  r  r  r   r-   r-   r.   test_trilu_lower     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 )NrJ   )r   r7   r  r-   r   r   r   r"  r   r  )r`   r   rW   r   r   r   r   r   r-   r-   r.   test_trilu_upper_zero  r&  z(TestShapeInference.test_trilu_upper_zeroc              	   C  r  )NrJ   )r   r   r7   r   r   r   r"  )r`   r   rX  r   r   r   r   r-   r-   r.   test_trilu_lower_one  r   z'TestShapeInference.test_trilu_lower_onec              	   C     |  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g 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 NrJ   r-  r  rT  r   
input_mean	input_varrd  rJ   r  r   r+  r,  r'  output_mean
output_varr   training_moder'  r/  r0  r   r   r-   r-   r.   test_batch_norm_train  .   




z(TestShapeInference.test_batch_norm_trainc              	   C  r)  )NrJ   )r   r  r7   r  r   r  r  r   r+  r,  rd  r-  r.  r   r1  r'  r/  r0  r   r   r-   r-   r.   test_batch_norm_train_dim_param  r4  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g 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 r*  )r`   r   r   r   r   r   r   r   r-   r-   r.   $test_batch_norm_train_with_diff_type  r4  z7TestShapeInference.test_batch_norm_train_with_diff_typec              	   C  sp   |  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g d	d
gddgg }| |td
tjdg d S )NrJ   r-  r  rT  r   r+  r,  rd  r-  r'  r   r1  r   r   r-   r-   r.   test_batch_norm_test   s&   




z'TestShapeInference.test_batch_norm_testc              	   C  sp   |  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	g d
dgddgg }| |tdtjdg d S )NrJ   )r   r   NNNr  rT  r   r+  rP   r,  rd  r-  r'  r   r1  r   r   r-   r-   r.   test_batch_norm_test_no_dim0   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g 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 )NrJ   r  r   r+  r5  r,  rd  r-  )r'  running_meanrunning_varr   r1  r'  r:  r;  r   r   r-   r-   r.   test_batch_norm_train_no_shapeL   r4  z1TestShapeInference.test_batch_norm_train_no_shapec                 C  B   |  dtjdfgtddgdggg }| |tdtjdg d S )NrJ   rP   NonZeror'  )r   NrQ  r   r-   r-   r.   test_nonzeroh   r  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 )NrJ   r>  r'  r0  rQ  r   r-   r-   r.   test_nonzero_no_shaper      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 )NrJ   r   r>  r   )NNZ)r   rB  )r`   r   r   r   r   rW   r   r   r-   r-   r.   test_nonzero_existing_dim_paramz   s   z2TestShapeInference.test_nonzero_existing_dim_paramc                 C  r=  )NrJ   r-   r>  r'  )r   NrQ  r   r-   r-   r.   test_nonzero_scalar   rA  z&TestShapeInference.test_nonzero_scalarc              	   C  s\   t jtjg dd}t |}t jd|d}| g tdg dg|dgg }| ||g d S )Nr=  r+  r  r)   
type_protor  r~   	r   r  r   r   r  r  r`   r   r   rY   r  r  optional_val_infory   r-   r-   r.   $test_optional_construct_empty_tensor   s   

z7TestShapeInference.test_optional_construct_empty_tensorc              	   C  sf   t jtjg dd}t |}t |}t jd|d}| g tdg dg|dgg }| 	||g d S )Nr=  r+  r  rE  r  rG  )
r   r  r   rX  r  r  r  r`   r   r   )rY   r  r  r  rJ  ry   r-   r-   r.   &test_optional_construct_empty_sequence   s   


z9TestShapeInference.test_optional_construct_empty_sequencec                 C  sd   t jtjg dd}t |}t jd|d}| dtjdfgtddgdggg }| ||g d S )Nr   r+  r  rE  r  r  rH  rI  r-   r-   r.   test_optional_construct_tensor   s   

z1TestShapeInference.test_optional_construct_tensorc                 C  s   t jtjg d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 )	N)rM   r   r   r+  input_sequencerE  r  r  r  r  )
r   r  r   rW   r  r  r  r`   r   r   rY   r  r  sequence_val_infor  rJ  ry   r-   r-   r.    test_optional_construct_sequence   s&   


z3TestShapeInference.test_optional_construct_sequencec                 C  s~   t jtjg 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 }| ||t	dtj
d	g d S )
Nr   r+  r  rE  r  r  OptionalHasElementr  r-   )r   r  r   r   r  r  r`   r   r   r   r  rI  r-   r-   r.    test_optional_tensor_has_element   s$   

z3TestShapeInference.test_optional_tensor_has_elementc              	   C  s   t jtjg d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 )N)r   r   r   r+  r  rE  optionalr  r  r  rR  r  r-   )r   r  r   r   r  r  r  r`   r   r   r   r  rO  r-   r-   r.   "test_optional_sequence_has_element   s4   


	z5TestShapeInference.test_optional_sequence_has_elementc                 C  sZ   t jtjg dd}t jd|d}| dtjdfgtddgdggg }| ||g d S )NrM   r   r   r+  r  rE  r   OptionalGetElement)r   r  r   r+  r  r`   r   r   )rY   r  output_tensor_val_infory   r-   r-   r.   test_tensor_get_element!  s   
z*TestShapeInference.test_tensor_get_elementStringSplitc                 C  j   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)rM   Nlengthr   rJ   rZ  r   
r   r   r   rW   r`   r   r   r   r   r   rY   r   r,   r\  r]  ry   r-   r-   r.   test_string_split_basic!  "   

z*TestShapeInference.test_string_split_basicc                 C  r[  )Nr\  )r  Nr]  )r  rJ   rZ  r   r^  r_  r-   r-   r.   test_string_split_symbolic&!  ra  z-TestShapeInference.test_string_split_symbolicc              	   C  n   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\  )rM   r   r   Nr]  r   rJ   rZ  rM   maxsplitr   r^  r_  r-   r-   r.   test_string_split_nested;!  s   

z+TestShapeInference.test_string_split_nestedc              	   C  rc  )
Nr\  rP   r]  r-   rJ   rZ  rM   rd  r   r^  r_  r-   r-   r.   (test_string_split_zero_dimensional_inputN!  s   

z;TestShapeInference.test_string_split_zero_dimensional_inputc              	   C  rc  )
Nr\  )r3  r   r   Nr]  )r3  r   r   rJ   rZ  rM   rd  r   r^  r_  r-   r-   r.   test_string_split_empty_input`!  s   

z0TestShapeInference.test_string_split_empty_inputc                 C  s   t jtjg d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 )	NrV  r+  r  rE  rT  r  r  rW  )	r   r  r   r+  r  r  r`   r   r   )rY   r  tensor_val_intor  rJ  ry   r-   r-   r.    test_optional_tensor_get_elementt!  s$   

z3TestShapeInference.test_optional_tensor_get_elementc              	   C  s   t jtjg d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 )N)rM   r   r   r+  r  rE  rT  r  r  r  r  rW  )
r   r  r   rX  r  r  r  r`   r   r   )rY   r  r  sequence_val_intor  rJ  output_val_intory   r-   r-   r.   "test_optional_sequence_get_element!  s2   


	
z5TestShapeInference.test_optional_sequence_get_elementc                 C  sX   |  dtjdfdtjdfdtjdfgtdg ddggg }| |tdtjdg d S )Nr  r$  rJ   r   Where)r  rJ   r   r'  )r`   r   r  BFLOAT16r   r   r   r   r-   r-   r.   test_where_bfloat!  r  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 )Ngraph_with_unsupported_typer   r   r[  rJ   r   r   rf  rH   r)   r  r  rA   rE   ry   Tr  r   r   )r   rh   rX   r   r   r   r   r   
from_arrayr   rk  int32r   ri   rj   r   rk   assertFalsery   r  r~   r   r   )rY   modelrn   r-   r-   r.   ,test_parse_data_with_unsupported_tensor_type!  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 )Ngraph_with_undefined_typer   rr  r[  rJ   r   r   rf  rH   rs  rt  r   Tr  r   rB  r   rQ   r   rC  r@  r  )r   rh   rX   r   r   r   r   r   ru  r   rk  int64rU   ry   rE   	data_typer   ri   rj   r   rk   rw  r  r~   r   r   r`   r   rW   r   r   )rY   rx  rn   ry   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 )Nr  thetarM   r   r_  rT  
AffineGridgridr   )align_cornersr  r  )rY   r   r  r  r  ry   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)rM   r   r   r7   r  r~  r   r   r_  r   r  r  r  r  )rY   r   r  Dr  r  ry   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 )NrJ   r  r  )r   r   r   rM   
GridSampler   nearestborderr   r  padding_moder  r  r   r-   r-   r.   test_gridsample_2d!"  $   


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 )NrJ   )r   r   r   r   r   r  )r   r   rM   r   r   r  r   r  r  r   r  )r   r   r   rM   r   r  r   r-   r-   r.   test_gridsample_3d7"  r  z%TestShapeInference.test_gridsample_3dc                 C  r  )NrJ   r  r  )r   H_outW_outrM   r  r   )r   r  r  r  r   r   r-   r-   r.   test_gridsample_2d_defaultsM"     

z.TestShapeInference.test_gridsample_2d_defaultsc                 C  r  )NrJ   )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_"  r  z.TestShapeInference.test_gridsample_3d_defaultsc              
   C  T   |  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 )
NrJ   )r   r  NNr  )r   NNrM   r  r   linearr  r  r  r   r   r-   r-   r.   test_gridsample_2d_no_dimq"  s$   

	z,TestShapeInference.test_gridsample_2d_no_dimc              
   C  r  )
NrJ   )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	g d
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  r  SequenceMapout_sequencerU  	r   r   r   r   rX   r   r`   r   r   rY   r[   r   r  ry   r-   r-   r.   %test_sequence_map_identity_known_dims"  D   


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g d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   r  r   r  )r  r   r   r  )r7   r   r   r  r  r  r  r  rU  NNr   r  r  r-   r-   r.   'test_sequence_map_identity_unknown_dims"  r  z:TestShapeInference.test_sequence_map_identity_unknown_dimsc                 C  s4  t jtdg ddgtdg d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g d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
  rJ   starts1ends1r  r  y1rJ   starts2ends2r  r  y2r  rJ   r  )r  r  r   )r   (   r   r  r   r!  r  r  r  r  r  r  r  r   r  rA   r)   r  r  rE   r  r  i6  r   r  n      r   r  Z   r  r   r  r  r  r  out_sequence1out_sequence2rU  r  r   rX   r   ri   r   r   r   r   rW   r`   r   r   rY   r  ry   r-   r-   r.   'test_sequence_map_slice_outs_known_dims"  j   


	


z:TestShapeInference.test_sequence_map_slice_outs_known_dimsc                 C  s4  t jtdg ddgtdg d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g d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  r  r  r  r  rJ   r  )r  W1r   )r  W2r   r  r   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.   )test_sequence_map_slice_outs_unknown_dims2#  r  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g d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  rJ   r   r  )r  r  r  r   )rA   r)   r  r  r  r  r  r  r  r  r  r  r  r  shapesrU  r  )r   rX   r   ri   r   r   r   rW   r`   r   r   r  r-   r-   r.   'test_sequence_map_different_tensor_typeq#  s@   




z:TestShapeInference.test_sequence_map_different_tensor_typec                 C     |  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 )
NrF  r   r-   r$  rG  HammingWindowr   r   periodicr`   r   r   r   rW   r   r   r   r   r-   r-   r.   test_hammingwindow#  H   		z%TestShapeInference.test_hammingwindowc                 C  r  )
NrF  r   r-   r$  rG  
HannWindowr   r   r  r  r   r-   r-   r.   test_hannwindow#  r  z"TestShapeInference.test_hannwindowc                 C  r  )
NrF  r   r-   r$  rG  BlackmanWindowr   r   r  r  r   r-   r-   r.   test_blackmanwindow#  r  z&TestShapeInference.test_blackmanwindowc           	   
   C  4   g | ]\\}}\}}}}}}||||||||fqS r-   r-   	r1   r)   r,   test_aspectr  r"  onesidedinverseexpected_shaper-   r-   r.   r9   $  $    
zTestShapeInference.<listcomp>DFT))reals_default_axisrM   r7   r   NNNrD  )reals_axis_0r   r7   r  r   r   r   r   r   r7   r  rM   )reals_axis_1r  r   r   r   r  )reals_axis_2r  rM   r   r   r  )reals_axis_negr  r&  r   r   r  )reals_axis_0_onesidedr  r   r   r   )rM   r7   r  rM   )reals_axis_1_onesidedr  r   r   r   )r   r   r  rM   )reals_axis_2_onesidedr  rM   r   r   r   r7   r  rM   )reals_axis_neg_onesidedr  r&  r   r   r  )complex_default_axisrD  NNNrD  )complex_onesidedrD  r   r   N)rM   r   rM   )real_inverser  r   Nr   rD  )complex_inverserD  r   Nr   rD  r   r,   _test_aspectr  
tuple[int]r"  
int | Noner  r  r  c	                 C  sX  i }	|d ur
||	d< |d ur||	d< |dk r/|d ur||	d< t dddgdgfi |	g}
g }n@|dks5J |d ur_t d	g dgtdtjd
|fdt dg ddgfi |	g}
tdtjd
g}nt dg ddgfi |	g}
g }| g t d	g dgtdtj|tj|tj	d
 dg|
g }| j|tdtj|g|tdtj|tt|gd d S )Nr  r  r  r"  r  r   r  r  rF  r-   rG  r   r  r"  r   r  r  rf  r   r   r   r   rW   r   r`   r   r   onesfloat32flattenr   r   r   r   )rY   r   r,   r  r  r"  r  r  r  
attributesrA   value_infosry   r-   r-   r.   test_dft$  sh   3	
zTestShapeInference.test_dftc           	   
   C  r  r-   r-   r  r-   r-   r.   r9   $  r  ))r  r  NNNrM   r  rM   )r  r  r   r   r   )r  r7   r  rM   )r  r  r   r   r   )r   r  r  rM   )r  r  rM   r   r   r   r7   r  rM   )r  r  r&  r   r   r  )r  r  r   r   r   )   r7   r  rM   )r  r  r   r   r   )r   r  r  rM   )r  r  rM   r   r   r   r7   r  rM   )r  r  r&  r   r   r  )r  rD  NNNr  )r  rD  r   r   N)rM   r  rM   )r  r  r   Nr   r  )r  rD  r   Nr   r  c	                 C  s  i }	|d ur
||	d< |d ur||	d< d}
|dk rF|d ur ||	d< t dg dgtdtjd|
fd	t d
ddgdgfi |	g}tdtjdg}nj|dksLJ |d urt 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
g ddgfi |	g}tdtjdtdtjdg}n%t dg dgtdtjd|
fd	t d
g ddgfi |	g}tdtjdg}| g t dg dgtdtj|tj|tj	d
 d	g|g }| j|tdtj|g|tdtj|tt|gd d S )Nr  r  r  r  r"  rF  
dft_lengthr-   rG  r  r   r  r   r  r"  )r   r  r  rf  r   r  )rY   r   r,   r  r  r"  r  r  r  r  r  rA   r  ry   r-   r-   r.   test_dft_dft_length$  s   3
z&TestShapeInference.test_dft_dft_length))r  r   )last_negativer#   )out_of_ranger   )out_of_range_negativer  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" | j|tdtjdtdtjdgttdgd W d    d S 1 sTw   Y  d S )NrF  r   rM   r7   r7   rM   rf  rG  r  r  r  r   )r  r"  rM   r   r7   rM   r3  r   )r`   r   r   r   r   r   r  r  r  r   ri   rj   r   r   r   r   r   r   rY   r   r"  ry   r-   r-   r.   test_dft_invalid_axis_opset17!%  s4   	"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g d	d
ggg }| 
tjj( | j|tdtjdtdtj	dtd
tjdgttdgd W d    d S 1 sfw   Y  d S )NrF  r   r  rf  rG  r"  r-   r  r  r  r  r  r   )r`   r   r   r   r   r   r  r  r  rW   r   ri   rj   r   r   r   r   r   r   r  r-   r-   r.   test_dft_invalid_axis_opset20F%  sB   	"z0TestShapeInference.test_dft_invalid_axis_opset20)real)rM   r7   r7   r   )complexr  tuple[int, ...]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g dd	ggg }| j
|tdtj|td	tjd
gttdgd d S )Nr"  r-   rF  r   rf  rG  r  r  r  r  r  r   r`   r   rW   r   r   r   r   r  r  r  r   r   r   r   r   rY   r   r   ry   r-   r-   r.   test_dft_dynamic_axis_opset20r%  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	g d
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-   rF  r   rf  rG  r  r  r  r  r  r   r  NNNrM   r  r   )r`   r   rW   r   r   r   r   r  r  r  rk  r{  r   r   r   r   r   r  r-   r-   r.   1test_dft_dynamic_axis_onesided_dft_length_opset20%  sP   	
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g d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-   rF  r   rf  rG  r  r  r  r   r  r  r  r   r  r  r-   r-   r.   &test_dft_dynamic_axis_onesided_opset20%  s4   	
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 )NrF  r   r  rf  rG  r  r  r  r   r  r  r3  r   r`   r   r   r   r   r   r  r  r  r   r   r   r   r   r   r-   r-   r.   &test_dft_onesided_default_axis_opset17%  0   
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g d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 )NrF  r   r  rf  rG  r  r  r  r   r  )rM   r7   r   rM   r  r   r	  r   r-   r-   r.   &test_dft_onesided_default_axis_opset20&  r  z9TestShapeInference.test_dft_onesided_default_axis_opset20c                 C  s6  |  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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g 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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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 )NrF  signal)rM   r  r   )r   r   r   r   r   r   r   r   r   r   rM   rM   rM   rM   rM   r   r   r   r   r   rG  
frame_stepr-   r   windowr   r  STFT)r  r  r  r  r  frame_length)r  r  r  r  )r`   r   r   r   r   rW   r   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g 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tdtjdtdtjdg d S )NrF  num_mel_binsr-   r$  rG  r  rh  sample_ratelower_edge_hertzg      $@upper_edge_hertzg      Y@MelWeightMatrixr  r  r  r  r  r  rQ  r  )r`   r   r   r   rW   r   r   r   r   r-   r-   r.   test_melweightmatrix&  sl   

/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g d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 )NrF  r  r-   r$  rG  r  rh  r  r  r  r  r  r  r  r  )output_datatyper  )	r`   r   r   r   rW   r   r+  r   r   r   r-   r-   r.   )test_melweightmatrix_with_output_datatype&  sn   

04z<TestShapeInference.test_melweightmatrix_with_output_datatypec              	   C  v   | 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)r  r  r   r   r   CenterCropPadr   r   r   r  r  r9  r  r  r9  r   r  r   r  r   r-   r-   r.   test_center_crop_pad_hwc_crop2'     

	
z0TestShapeInference.test_center_crop_pad_hwc_cropc              	   C  r  )Nr   )r   r  r  r   r   r!  r   r   rM   r  r"  r  )r   r  r9  r  r   r  r   r-   r-   r.   test_center_crop_pad_chw_cropB'  r%  z0TestShapeInference.test_center_crop_pad_chw_cropc              	   C  r  )Nr   )r  r  r   r   r   r!  r   r   r   r  r  r9  r  )r  r9  r   r  r   r  r   r-   r-   r.    test_center_crop_pad_hwc_croppadR'  r%  z3TestShapeInference.test_center_crop_pad_hwc_croppadc              	   C  r  )Nr   )r   r  r  r   r   r!  r   r   rM   r  r'  r  )r   r  r9  r  r   r  r   r-   r-   r.    test_center_crop_pad_chw_croppadb'  r%  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   r  r   r   r!  r   r  r   r  r   r-   r-   r.   (test_center_crop_pad_without_input_shaper'  s   


z;TestShapeInference.test_center_crop_pad_without_input_shapec              	   C  r  )Nr   )r  r  r   r   r   r!  r   r   r   r  r"  r  r#  r  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g dg 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tjdfg|gg }| j|tdtjdgttdtt	d	gd
 d S )NCategoryMapperrJ   r   r=  123r*   cats_int64scats_stringsr   r   r}  r   )r   r7   r   )
r   r   r`   r   rW   r   r   r   r   r   )rY   cat	graph_int	graph_strr-   r-   r.   test_category_mapper'  s@   
z'TestShapeInference.test_category_mapperr=  r.  r/  Nr-  r0  c                 C  s^   t ddgdgt||d}| dtjdfg|gg }| jtjj| j	|t
tdt
tdgd d S )	Nr,  rJ   r   r1  r   r   r}  r   )r   r   r`   r   rW   r   ri   rj   r   ro   r   r   )rY   r2  r3  r4  ry   r-   r-   r.   0test_category_mapper_fails_if_invalid_attributes'  s*   
zCTestShapeInference.test_category_mapper_fails_if_invalid_attributesc                 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 )NTreeEnsembleRegressorrJ   r   r7   )r*   	n_targetsr   r   r   r7   r   r}  r   )
r   r   r`   r   r+  r   r   r   r   r   rY   treery   r-   r-   r.   test_tree_ensemble_regressor'  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 )Nr7   r	  TreeEnsemblerJ   r   r   nodes_splitsnodes_modesmembership_values)r   r  r  r  r  r\  rM  leaf_weightsr   )r*   r:  nodes_featureidsrA  rB  nodes_truenodeidsnodes_falsenodeidsnodes_trueleafsnodes_falseleafsrC  leaf_targetidsrD  
tree_roots
Batch SizeFeatures)rM  r7   r}  r   )r   r   r   rz   r%   r   r   r   nanr`   r   r   r   r   )rY   rg  interior_nodesleavesr>  ry   r-   r-   r.   test_tree_ensemble'  s^   
"

z%TestShapeInference.test_tree_ensembler   r  rD  )r	  r   r	  rA  r   r7   )r  r  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 }| jtj	j
| j|ttdttd
gd d S )Nr7   r	  r@  rJ   r   r   rB  )r*   r:  rE  rA  rB  rF  rG  rH  rI  rJ  rD  rK  rL  r}  r   )r   r   r   r   r   r`   r+  r   ri   rj   r   ro   r   r   )rY   rF  rD  rA  rP  rQ  r>  ry   r-   r-   r.   .test_tree_ensemble_fails_if_invalid_attributes((  sJ   
zATestShapeInference.test_tree_ensemble_fails_if_invalid_attributesc                 C  sr   t ddgddgg d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 )NTreeEnsembleClassifierrJ   r   r   )r   r   rM   r   r   )classlabels_int64sr*   r;  )r   r<  r   r}  r   )r   r   r`   r   r+  r   r   rW   r   r   r   r=  r-   r-   r.   test_tree_ensemble_classifiero(  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 )NArrayFeatureExtractorrJ   r   r   r8   ))r   rM   )r-   rz  )r   r   r  r   r   r  r   	r   r   r`   r   rW   r   r   r   r   )rY   node
axes_shapeexpectedry   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 )	N	BinarizerrJ   r   r8   r  r   r  r   rX  )rY   rY  ry   r-   r-   r.   test_binarizer(  s&   

z!TestShapeInference.test_binarizerc              
   C  s`   |  dtjdfgtddgdgg dddgg }| j|tdtjdgttd	tt	d
gd d S )Nr   rM   r   r   OneHotEncoderr  r  
ai.onnx.ml)r2  r*   rM   r   r   r   r   r  r   )
r`   r   rW   r   r   r   r   r   r   r   r   r-   r-   r.   test_one_hot_encoder(  s&   	
z'TestShapeInference.test_one_hot_encoderc                 C  sZ   |  dtjdfgtddgdg||ddgg }| jtjj| j|t	t
dt	tdgd	 d S )
Nr   r_  r`  r  ra  )r2  r3  r*   r   r}  r   )r`   r   rW   r   r   ri   rj   r   ro   r   r   r   )rY   r2  r3  ry   r-   r-   r.   0test_one_hot_encoder_fails_if_invalid_attributes(  s*   


zCTestShapeInference.test_one_hot_encoder_fails_if_invalid_attributesc              	   C  st   dg dit jjfdg dit jjff}|D ]!\}}| j||d | || W d    n1 s2w   Y  qd S )NrU  r=  classlabels_strings)r   r   c)attrsr  )ri   r   rW   r   subTestzip_map_test_case)rY   paramsrg  r  r-   r-   r.   test_zip_map(  s   zTestShapeInference.test_zip_mapc                 C  s   |  dtjdfgtddgdgfi |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   ZipMapr  r*   ra  r-   r   r  r   )r`   r   r   r   ri   r   make_map_type_protor  r   r  r  r   r   r   )rY   rg  r  ry   typr-   r-   r.   ri  )  s6   	
z$TestShapeInference.zip_map_test_casec                 C  r  )Nr   rb  r   rP   Compressr  r`   r   rW   r  r   r   r   r   r-   r-   r.   test_compress_without_axis!)  r  z-TestShapeInference.test_compress_without_axisc              	   C  r-  )
Nr   rb  r   rP   ro  r  r#   r!  )rM   r   r   Nrp  r   r-   r-   r.   test_compress_with_axis.)  r  z*TestShapeInference.test_compress_with_axisc                 C  s   d}t j|}tjdddg g d}t j| | t jj t j	|d W d    n1 s1w   Y  t j
|j|j|j d S )Nz
            <
                ir_version: 7,
                opset_import: ["" : 1]
            >
            agraph (X, Y) => (Z)
            {
                Z = CustomOp(X, Y)
            }
           CustomOpr  r   )r  r  T)ri   parserparse_modelr   r   register_schemar   rj   r   rk   deregister_schemar)   r&   r*   )rY   r   rx  	op_schemar-   r-   r.   (test_check_type_when_schema_has_empty_io<)  s    
z;TestShapeInference.test_check_type_when_schema_has_empty_ioc                 C  `   d}t j|}| t jj t jj|dd t j| W d    d S 1 s)w   Y  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
full_check	ri   rt  ru  r   rj   r   r   rl   rk   rY   modeltxtrx  r-   r-   r.   #test_issue_layer_normalization_6187W)     	"z6TestShapeInference.test_issue_layer_normalization_6187c                 C  rz  )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_6180f)  r  z'TestShapeInference.test_issue_conv_6180c                 C  s`   d}t j|}| t jj t jj|dd t j| W d    d S 1 s)w   Y  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{  )	ri   rt  ru  r   r   r]  rl   rj   rk   r~  r-   r-   r.   test_issue_gemm_6185u)  r  z'TestShapeInference.test_issue_gemm_6185c                 C  rz  )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)  r  z'TestShapeInference.test_issue_stft_6186r[  c              	   C  sd   | j dtjdfdgtddgdgddgg tdtjddgd}| jtjj	| j
|tt|gd	 d S )
Nzstd.constantr  r  r[  invalid_node)r  r  r)   )ir  r   )r`   r   rW   r   r   r   r   ri   rj   r   ro   r   r   r   r   r-   r-   r.   test_issue_constantofshape_6135)  s$   
z2TestShapeInference.test_issue_constantofshape_6135)r!   rq   )r   r5   rc   r   r!   rq   )r   r   r   r   r!   rq   )r   r   r   r   r   r   r!   rq   )r   r5   r  r  r!   rq   )
r  r  r  r  r  r  r   r  r!   rq   )r  )r  r  r  r  r  r  r   r  r  r5   r!   rq   )
r   r   rA  r   r  r   r  r   r!   r   )r   r5   r,   r  r  r5   r  r  r"  r  r  r  r  r  r  r  r!   rq   )r   r5   r"  r  r!   rq   )r   r5   r   r  r!   rq   (  r   r   r   r   r   r   expandr=   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-  r1  r5  r6  r;  r>  rA  rE  rI  ra  rm  rr  rs  rv  ry  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,  r4  r8  r?  rB  rF  rK  rP  rT  rY  rZ  r]  r_  rl  ro  rt  rx  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  r1  r4  r>  rB  rF  rG  rI  rJ  rK  rL  rM  rR  rT  rU  rV  rZ  r`  rf  rj  rk  rp  rs  rt  rv  ry  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*  r9  r>  r?  rE  rG  rK  rL  rY  rZ  r]  ra  rc  rd  rg  rm  ro  rp  rq  rr  rs  r{  r}  r  r  r  r  r  r  r  r  r  r  r  ri   r   r   r   ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  
skipUnlessr   r  r  r  r  r  r  r  r  r  r   r	  r  r  r  r  r  r  r#  r(  r)  r,  r/  r1  r6  r8  r9  r;  r<  r>  rA  rC  rF  rJ  rL  rM  rP  rT  rV  rZ  r\  r]  r_  r`  ra  rb  rd  re  rh  rj  rn  ro  rq  ru  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(  r3  r6  r7  r8  r9  r<  r?  r@  rC  rD  rK  rL  rM  rQ  rS  rU  rY  r`  rb  rf  rg  rh  rj  rm  rp  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  	itertoolsproductr  r  r  r  r  r  r  r
  r  r  r  r  r$  r&  r(  r)  r*  r+  r7  r8  r?  r+  rR  r   rS  rV  r\  r^  rc  rd  rk  ri  rq  rr  ry  r  r  r  r  r  r-   r-   r-   r.   r      s   
	)/8" 


'








 
,"





 


















:9;99,**D6)%####$#($&

&
 $D
		


 %#)'.































		


'))??(+++
'G
'r$.  
@A$ 4"""""""".	r   __main__rM   )	verbosity)r    r   r!   r"   )r4   r5   r!   r6   )5
__future__r   r  r  typingr   r   numpyr   r   r   onnx.shape_inferenceri   r   r   r   r	   r
   r   r   r   r   r   r   r   r   	onnx.defsr   r   r   r   r   onnx.helperr   r   r   r   r   r   onnx.parserr   collections.abcr   r/   get_all_schemasr3   __annotations__r=   TestCaser>   r   r   mainr-   r-   r-   r.   <module>   s   < 

                                                                                   