o
    toi*                    @  sn  U d dl mZ d dl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'm(Z( d dl)m*Z* eryd d	l+m,Z, d"ddZ-dd e. D Z/de0d< d#ddZ1G dd dej2Z3G dd de3Z4G dd de3Z5e6dkrej7d 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_graph	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.   R/home/ubuntu/.local/lib/python3.10/site-packages/onnx/test/shape_inference_test.pyget_available_versions6   s   r0   c                 C  s"   i | ]}|j |jtt|fqS r.   )r*   r+   	frozensetr0   ).0r!   r.   r.   r/   
<dictcomp>B   s    r3   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   )r2   r-   r+   r.   r/   
<listcomp>M   s    z$all_versions_for.<locals>.<listcomp>)r4   
ValueErrorsorted)r5   versions_setr,   r.   r9   r/   all_versions_forH   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*   r2   xr.   r.   r/   	<setcomp>c       z7TestShapeInferenceHelper._make_graph.<locals>.<setcomp>   SEED_r.   UNKNOWN_SHAPE_NReshaper   test)rF   rD   )
isinstancetupler   r   	UNDEFINEDr   appendINT64r   r   r   )selfr@   rB   rD   rF   names_in_initializerinput_value_infos
seed_value	seed_name
proto_typeseed_value_infor.   r.   r/   _make_graphZ   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   )
poprT   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	d
D ]\}}| 	|j
|j
 qMd S )Nc                 S  rH   r.   rI   rJ   r.   r.   r/   rL      rM   z<TestShapeInferenceHelper._assert_inferred.<locals>.<setcomp>c                   s   g | ]	}|j  vr|qS r.   rI   rJ   names_in_visr.   r/   r:      s    z=TestShapeInferenceHelper._assert_inferred.<locals>.<listcomp>c                 S     | j S rQ   rI   rK   r.   r.   r/   <lambda>       z;TestShapeInferenceHelper._assert_inferred.<locals>.<lambda>)keyc                 S  rt   rQ   rI   ru   r.   r.   r/   rv      rw   T)strict)rT   r   graphrD   ro   listr<   lenzip_compare_value_infostype)	rY   ra   rp   rc   rz   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   NotImplementedErrorr6   )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 rQ   )pytestskip)rY   	conditionreasonr.   r.   r/   skipIf   s   zTestShapeInferenceHelper.skipIfrQ   )
r@   rA   rB   rC   rD   rE   rF   rG   r"   r   )ra   rb   rc   r   r"   r   )ra   rb   rp   rE   rc   r   r"   rq   )r   r   r   r   r"   rq   )__name__
__module____qualname__r`   ro   r   r~   r   r.   r.   r.   r/   r?   Y   s    
1

3r?   c                   @  sJ)  e Zd ZdjddZdkd	d
ZeeddjddZeeddjddZ	eeddjddZ
eeddjddZeeddjddZeeddjddZeeddjddZdlddZeeddjd d!Zdmd#d$Zeeddjd%d&Zeed'djd(d)Zeed'ed*djd+d,Zeed-djd.d/Zeed0djd1d2Zeed0djd3d4Zeed0djd5d6Zeed0djd7d8Zeed0djd9d:Zeed;djd<d=Zeed;djd>d?Zeed;djd@dAZeed;djdBdCZ eed;djdDdEZ!eedFdjdGdHZ"eedFdjdIdJZ#eedFdjdKdLZ$eedFdjdMdNZ%eedFdjdOdPZ&eedFdjdQdRZ'eedFdjdSdTZ(eedFdjdUdVZ)eedWdjdXdYZ*eedWdjdZd[Z+eed\djd]d^Z,eed\djd_d`Z-eed\djdadbZ.eed\djdcddZ/eed\djdedfZ0eedgdjdhdiZ1eedjdjdkdlZ2eedgdjdmdnZ3eedgdjdodpZ4eedgdjdqdrZ5eedgdjdsdtZ6eedgdjdudvZ7eedgdjdwdxZ8eedgdjdydzZ9eedgdjd{d|Z:eedgdjd}d~Z;eedgdjddZ<eedgdjddZ=eedgdjddZ>eeddjddZ?eeddjddZ@eeddjddZAeeddjddZBeeddjddZCeeddjddZDeeddjddZEeeddjddZFeeddjddZGeeddjddZHeeddjddZIeeddjddZJeeddjddZKdjddZLeeddjddZMdjddZNeeddjddZOeeddjddZPeeddjddZQeeddjddZRdjddZSeeddjddZTeeddjddZUeeddjddZVeeddjddZWeeddjddZXdjddĄZYdjddƄZZdjddȄZ[djddʄZ\djdd̄Z]djdd΄Z^djddЄZ_djdd҄Z`djddԄZadjddքZbdjdd؄ZcdjddڄZddjdd܄ZedjddބZfdjddZgdjddZhdjddZidjddZjdjddZkdjddZldjddZmdjddZndjddZodjddZpdjddZqdjddZrdjddZsdjddZtdjddZudjddZvdjdd ZwdjddZxdjddZydjddZzdjddZ{djd	d
Z|djddZ}djddZ~djddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjdd Zdjd!d"Zdjd#d$Zdjd%d&Zdjd'd(Zdjd)d*Zdjd+d,Zdjd-d.Zdnd1d2Zdnd3d4Zdjd5d6Zdjd7d8Zdjd9d:Zdjd;d<Zdjd=d>Zdjd?d@ZdjdAdBZdjdCdDZdjdEdFZdjdGdHZdjdIdJZdjdKdLZdjdMdNZdjdOdPZdjdQdRZdjdSdTZdjdUdVZdod\d]Zdjd^d_Zdod`daZdjdbdcZ	ddpdqdfdgZdjdhdiZdodjdkZdjdldmZdjdndoZdjdpdqZdjdrdsZdjdtduZdjdvdwZdjdxdyZdjdzd{Zdjd|d}Zdjd~dZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZÐdjddZĐdjddZŐdjddZƐdjddZǐdjddZȐdjddZɐdjddZʐdjddZːdjddZ̐djddZ͐djddZΐdjddZϐdjddZАdjddZѐdjddZҐdjddZӐdjddÄZԐdjdĐdńZՐdjdƐdǄZ֐djdȐdɄZאdjdʐd˄Zؐdjd̐d̈́ZِdjdΐdτZڐdjdАdфZېdjdҐdӄZܐdjdԐdՄZݐdjd֐dׄZސdjdؐdلZߐdjdڐdۄZdjdܐd݄Zdjdސd߄ZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjd dZdjddZdjddZdjddZdjdd	Zdjd
dZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZ djddZdjddZdjd d!Zdjd"d#Zdjd$d%Zdjd&d'Zdjd(d)Zdjd*d+Zdjd,d-Z	djd.d/Z
djd0d1Zdjd2d3Zdjd4d5Zdjd6d7Zdjd8d9Zdjd:d;Zdjd<d=Zdjd>d?Zdjd@dAZdjdBdCZdjdDdEZdjdFdGZdjdHdIZdjdJdKZdjdLdMZdjdNdOZdjdPdQZdjdRdSZdjdTdUZdjdVdWZdjdXdYZdjdZd[Z djd\d]Z!djd^d_Z"dld`daZ#djdbdcZ$dmdddeZ%djdfdgZ&dldhdiZ'djdjdkZ(ee)j*j+e)j*j,e)j*j-gdjdldmZ.djdndoZ/djdpdqZ0djdrdsZ1djdtduZ2djdvdwZ3ed*djdxdyZ4ee)j*j+e)j*j,e)j*j-gdjdzd{Z5djd|d}Z6djd~dZ7djddZ8djddZ9djddZ:djddZ;djddZ<djddZ=e>e?ddjddZ@e>e?ddjddZAdjddZBdjddZCdjddZDdjddZEdjddZFeje?redng dddjddZGeje?redng dddjddZHeje?redng dddjddZIdrddZJdjddZKdjddZLdjddZMdjddZNdjddZOdjddZPdjddZQdjddZRdjddZSdjddZTdjddZUdjddZVdjdÐdĄZWdjdŐdƄZXdjdǐdȄZYdjdɐdʄZZdjdːd̄Z[djd͐d΄Z\djdϐdЄZ]djdѐd҄Z^djdӐdԄZ_djdՐdքZ`djdאd؄ZadjdِdڄZbdjdېd܄ZcdjdݐdބZddjdߐdZedjddZfdjddZgdjddZhdjddZidjddZjdjddZkdjddZldjddZmdjddZndjddZodjddZpdjddZqdjddZrdjddZsdjddZtdjdd ZudjddZvdjddZwdjddZxdjddZydjd	d
ZzdjddZ{djddZ|djddZ}djddZ~djddZdjddZdjddZdjddZdjddZdjddZdjdd Zdjd!d"Zdjd#d$Zdjd%d&Zdjd'd(Zdjd)d*Zdjd+d,Zdjd-d.Zdjd/d0Zdjd1d2Zdjd3d4Zdjd5d6Zdjd7d8Zdjd9d:Zdjd;d<Zdjd=d>Zdjd?d@ZdjdAdBZdjdCdDZdjdEdFZdjdGdHZdjdIdJZdjdKdLZdjdMdNZdjdOdPZdjdQdRZdjdSdTZdjdUdVZdjdWdXZdjdYdZZdjd[d\Zdjd]d^Zdjd_d`ZdjdadbZdjdcddZdjdedfZdjdgdhZdjdidjZdjdkdlZdjdmdnZdjdodpZdjdqdrZdjdsdtZdjdudvZdjdwdxZdjdydzZdjd{d|Zdjd}d~ZdjddZdjddZdjddZdjddZdjddZdd ZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZdjddZÐdjddZĐdjddZŐdjddZƐdjddZǐdjddZȐdjddZɐdjddZʐdjddZːdjddZ̐djddZ͐djddZΐdjddZϐdjddZАdjddZѐdjddZҐdjddZӐdjddZԐdjddZՐdjddZeedÃdjdĐdńZeedÃdjdƐdǄZeedÃdjdȐdɄZeedÃdjdʐd˄ZeedÃdjd̐d̈́ZېdjdΐdτZܐdjdАdфZݐdjdҐdӄZސdjdԐdՄZߐdjd֐dׄZdjdؐdلZdjdڐdۄZdjdܐd݄Zdjdސd߄ZdjddZdjddZdjddZdj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 dsddZedd eedd	D dsd
dZeg ddtddZeg ddtddZeddgduddZeddgduddZeddgduddZdjddZdj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djd0d1Zeg d2d3d4gfg d2d5fd5g d6fd7ge>e?ddjd8d9Ze>e?ddjd:d;Zee*j+e*je*j,ge>e?ddjd<d=Z	ed>gd? e
d@e*jdAdBgdC e
dDe*jdEdBgdF fd>gdF e
d@e*j+dAdBgdC e
dDe*jdEdBgdF fd>gdF e
d@e*jdGdBgdH e
dDe*jdEdBgdF fd>gdF e
d@e*jdAdBgdC e
dDe*j+dEdBgdF fge>e?ddjdIdJZe>e?ddjdKdLZe>e?ddjdMdNZe>e?ddjdOdPZe>e?ddjdQdRZeg d2g d6fd7ge>e?ddjdSdTZe>e?ddjdUdVZdjdWdXZdjdYdZZdjd[d\Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zeedgdhdi Zd5S (v  TestShapeInferencer"   rq   c                 C  s(   |  dgg g }| tjj| j| d S )Ny)r`   assertRaisesri   rj   InferenceErrorro   rY   rz   r.   r.   r/   test_empty_graph   s   z#TestShapeInference.test_empty_graphopr6   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 )NrK         r8   r   r`   r   FLOATr   r   r   )rY   r   rc   rz   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rN      r   r   Y   r   rN   permr   rN   r   opset_imports	r`   r   r   r   r   r   r   r   r   rY   _r-   rz   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   rV   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   )r8   r8   r8   )
r`   r   r   r   r   r   ri   rj   r   ro   rY   r   rz   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_type4  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 NrK   r   MatMulzr   )npmatmularangeprodreshaper   r`   r   r   r   r   r   r   r   r   rY   r-   r   r   expected_out_shaperz   r.   r.   r/    _make_matmul_test_all_dims_knownF  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rN   r   rN   rN   r   )r8   rN   rN   r   r   rN   rN   r   r   r   rN   r   rN   r   )r   r   rN   r8   r   r   rN   r   r   rN   r   )r   rY   r   r-   r.   r.   r/   test_matmul_all_dims_knownX  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_unknowng  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 NrQ   r.   r   r   )rN   r   )r   r   )r   r   )r   N)Nr   r   )r   rN   r8   r   r   r8   )r   r   r   rN   r   r   r   r8   )r   r   r.   r.   r/   test_matmul_allow_unknownu  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 )NrK   rN   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 )NrK   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 )NrK   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   r8   r8   output_shaper   kernel_shaper   r   r   r   outputr8   r8   r   r8   rF   r   r   r8   r8   r   r`   r   r   rX   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  rN   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   r8      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   r8   r   r   r   r   r  r  r   r8   	dilations   r  rN   rN   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   r8   )r   r   r8   r  r   rN   r   r   r8   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 )NrK   r   r   )   r   r   r  r   r   axis)r
  r   r   r   r   r   r.   r.   r/   test_concat3     
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 )NrK   r   r   r   NNNr  rK   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 )
NrK   rN   rN   rN   r   r  r   rN   r"  )rN   rN   r   r   r   r   r.   r.   r/   test_concat_3d_axis_2M  r%  z(TestShapeInference.test_concat_3d_axis_2c              	   C  r   )NrK   r   rN   r   )r   r   r  r   r   r"  )r   r8   r   r   r   r.   r.   r/   test_concat_paramZ  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 )NrK   r,  r  r   r   r"  r   r   r   r.   r.   r/   test_concat_param_single_inputg     
z1TestShapeInference.test_concat_param_single_inputrR   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 14rK   r   r   r   rR   r   NNr   )r   r`   r   r   rX   r   r   r   r   r   r   r   r.   r.   r/   %test_reshape_dynamic_shape_known_rankt  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 )NrK   r   r   MrR   r   r   
r`   r   r   rX   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 )NrK   r   r   rR   r   r   r5  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 )
NrK   r   r   r   rR   r   r      r  r   r`   r   r   rX   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 )NrK   r   r   r   rR   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 )
NrK   r   r   r   r   r   rR   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 )Nr0  z"allowzero is added from Version 14rK   r   r   r   r   r   rR   r   r   	allowzerorA  r  r   )r   r`   r   r   rX   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 )NrK   r   Constantr   r   r9  valuerR   r   r   )r`   r   r   r   r   rX   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!  rK   rN   r   r   r8   rK  r         ?皙??ffffff?scalesrN   r   r   r
  r   rS  r   r  c                     *   j  tdtjdgttgd d S Nr   rT  r   r   r   r   INT32r   r   r   r.   rz   rY   r-   r.   r/   call_inference
  
   
z8TestShapeInference.test_upsample.<locals>.call_inferencer
  Upsample is deprecated)r`   r   rY  r   r   r   r   r   r   r   r   r   ri   r   ValidationError	exceptionr6   rY   r   r-   r[  cmr_  r.   rZ  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!  rK   r   rK  r          @rO  gffffff@rQ  rR  rN   r   r
  r
  r   rL  rS  rU  rM  <f4dtypeTvalsrawr  c                     rV  rW  rX  r.   rZ  r.   r/   r[  :  r\  zATestShapeInference.test_upsample_raw_data.<locals>.call_inferencer
  r]  )r`   r   rY  r   r   r   r   r   r   r   r   r   arraytobytesr   ri   r   r^  r_  r6   r`  r.   rZ  r/   test_upsample_raw_data  sD   



z)TestShapeInference.test_upsample_raw_dataExpandc              	   C  r>  )NrK   r   r   r   r   ro  r   )rN   r   r  r  rN   r   r  r   r`   r   rY  rX   r   r   r   r   r   r   r   r   r.   r.   r/   test_expandJ  r=  zTestShapeInference.test_expandc              	   C  r8  )
NrK   r.   r   r   ro  r   )r   r:  r  r   rr  r   r.   r.   r/   test_expand_scalar_inputX  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 )NrK   rp  r   r   ro  r   r   r   <i8rg  Tri  r  r   r   r   )r`   r   rY  rX   r   r   r   rl  rm  r   r   r   r   r   r   r.   r.   r/   test_expand_raw_dataf  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 )
NrK   r   rN   Nr   r   ro  r   r  )NrN   Nr   
r`   r   rY  rX   r   r   r   r   r   r   r   r.   r.   r/   test_expand_dynamic_shape|  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 )	NrK   rx  r   )unk__0ro  r   r  r   ry  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  rK   rL  rS  rU  r}  r   rM  r  rT  r      roir:  sizesrK   r  rS  r  )r   r8   r  r!  rK   r   r  )r`   r   rY  r   r   r   r   r   r   r   r   rX   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   rN   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 18rK   rL  r  rU  r  r   r}  r  r   r   axesr  r!  r  )rN   r   r  r!  r   r   r`   r   rY  r   rX   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  rK   rL  r  rU  r  r   r}  r  r   r   rN   r  r  r  )rN   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 18rK   r   r8   r  rU  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 18rK   rL  r  rU  r  r   r}  r  r   r   r  r  r  r  r  )rN   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  rK   r  r  rU  r  r   r}  r  r   not_smallerr  r  r  )r  r  r   r  r   r.   r.   r/   test_resize_size_not_smallerI  r  z/TestShapeInference.test_resize_size_not_smallerc              	   C  r  )Nr  r  rK   rL  r  rU  r  r   r}  r  r   r   r  r  r  r  )rN   r   r  r  r   r  r   r.   r.   r/   %test_resize_size_axes_2_3_not_smallerf  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 11rK   rL  r  r  rS  rU  r}  rK   r  rS  r   rM  r  rT  r   r   r`   r   rY  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  rK   rL  r  r  rS  r   r}  r  r   r   r  )rP  rQ  r  rT  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  rK   rL  r  r  rS  r   r}  r  r   r  r  )rQ  rP  r  rT  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  rK   r   r  r  rS  rU  r}  r  r   rc  rf  rg  Tri  r  re  r   )r   r`   r   rY  r   r   r   r   rl  rm  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  rK   r   r  r  rS  rU  r  r   r}  r  r   rc  rf  rg  Tri  ru  r  re  r   )r   r`   r   rY  r   rX   r   r   r   rl  rm  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 11rK   r   r  r  rS  r  r  rU  r}  r  r   )rN   r  r:  r  ru  rg  Tri  r  r  r   )r   r`   r   rY  r   rX   r   r   r   rl  rm  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 )NrK   r   r  r   r   r   
r`   r   r   r   r   r   rX   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 15rK   r   r  r   r   startr   r   r   r`   r   r   r   r   r   rX   r   r   r   r   r.   r.   r/   test_shape_start_1+     
z%TestShapeInference.test_shape_start_1c              	   C  r  )Nr  r  rK   r   r  r   r   endr   r   r  r   r.   r.   r/   test_shape_end_19  r  z#TestShapeInference.test_shape_end_1c              	   C  r  )Nr  r  rK   r   r  r   r$   r  r  r   r  r   r.   r.   r/   test_shape_negative_startG  r  z,TestShapeInference.test_shape_negative_startc              	   C  r  )Nr  r  rK   r   r  r   r  r   r   r  r   r.   r.   r/   test_shape_clip1U  r  z#TestShapeInference.test_shape_clip1c              	   C  r  )Nr  r  rK   r   r  r   r  r  r   r   r  r   r.   r.   r/   test_shape_clip2c  r  z#TestShapeInference.test_shape_clip2Sizec                 C  r  )NrK   r   r  r   r.   r   r  r   r.   r.   r/   	test_sizeq  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 )	NrK   r   r   ir   r  r   r   r   
r`   r   r   rX   r   r   r   r   r   r   r   r.   r.   r/   test_gather|  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 )NrK   )r   r   r8   r  r   r  r   r   r"  )r   r   rN   r8   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 )NrK   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 )	NrK   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 )
NrK   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_  r6   rY   r   r-   ra  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 )
NrK   r  r  r   ur  rK   r  r  r   r   r  rY   r-   rz   r.   r.   r/   r    s   


	
z TestShapeInference._test_scatterc                 C  r  r  )r   ri   r   r^  _test_scatter_axis1r_  r6   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 )NrK   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 )
NrK   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 )NrK   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 )NrK   r   r8   r  indicesr   r   rN   updatesr   r   r  r  )rK   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 )NrK   r  r  r  r  r  r   r3  rR   
x_reshapedr  )r  r  r  r   r   r  r   r.   r.   r/   test_scatternd_noshape&  s$   




z)TestShapeInference.test_scatternd_noshapec              	   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	dgd d S )N
past_cache)rN   r:     @   update)rN   r:  r  r  write_indicesr   TensorScatter)r  r  r  present_cacherN   r"     r   r  r   r.   r.   r/   test_tensor_scatter@  s,   



z&TestShapeInference.test_tensor_scatter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~  rK   r   r   r   r   rN   r   r  r   )r   rN   r   r8   r  r  r   r  rU  r  )r`   r   r   r   r   r   r   r   r   rX   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 )NrK   r   r   r  r   r   	r`   r   r   r   r   r   r   r   r   r   r.   r.   r/   test_stringconcatz     


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 )NrK   r   r   )r   r   r   r  r   r   r  r   r.   r.   r/   test_stringconcat_broadcasting  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 )NrK   rT  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  )NrK   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 )NrK   r  r  r   r  r~  r  	r`   r   r   r   r
   r+   r-   r   r   rY   rz   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 )NrK   )r   r   r   NrN   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 )
NrK   r  r  rU  	Unsqueezer   )r   r   r   r8   r  )r   r   r   r   rN   r   r`   r   r   rX   r   r   r   r   r   r.   r.   r/   test_unsqueeze_regular     z)TestShapeInference.test_unsqueeze_regularc              	   C  r	  )
NrK   r  r  r   r
  r   )r   r   r  r   r   r   r8   r   r  r   r.   r.   r/   test_unsqueeze_unsorted_axes  r  z/TestShapeInference.test_unsqueeze_unsorted_axesc              	   C  r	  )
NrK   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 )	NrK   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 )
NrK   )r   rN   r   startsr  endsSlicerK   r  r  r   r&  r`   r   r   rX   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 )NrK   r  r  r   r  r  r  r   r   r   ru  rg  Tri  r  r  r   r`   r   r   rX   r   r   r   rl  rm  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 )NrK   )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 )NrK   r8   r  r!  r  r   r  r  stepsr  rK   r  r  r  r  r   rC  )rN   r  r  )r   r   r   r  r   rN   rN   r  r   r.   r.   r/   !test_slice_with_input_shape_steps8  "   




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 )NrK   )r   r  rN   r  r   r  r  r  r  r  r   r   r   r  )r   rN   r  )r   r  rN   r  r   r.   r.   r/    test_slice_with_input_shape_axesM  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 )NrK   r  r  r   r  r  r  rK   r  r  r  r   r#  r  r  r   r  r   r.   r.   r/   test_slice_unsorted_axesb      



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 NrK   r  r  r   r  r  r  r%  r   r#  )   iU  r   r   r  r  r  r   r.   r.   r/   test_slice_giant_numberv  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 )NrK   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_step  s$   




z(TestShapeInference.test_slice_giant_stepc                 C  r(  )NrK   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(  )NrK   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-  )NrK   rv  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 )NrK   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   DOUBLErY  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 )NrK   r   r   r8   r  r!  r   r8   r   rN   r   r   Convr   r   r   r   r   r   r   r   r   r   rN   r  r  r  r   r8   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 )
NrK   r   r   )2   r   rN   r9  r   r   r  )r   rA  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 )
NrK   r   r   r:  r:  r:  r   rA  r   r   r   r   r9  r   r   rN   r   r  r   rA  r  r   rN   r   r   r.   r.   r/   test_conv_dilations/     

z&TestShapeInference.test_conv_dilationsc              	   C  rD  )
NrK   rE  r   rF  r9  r   rG  r  r   rA  r  r   rN   r   r   r.   r.   r/   test_conv_strides<  rJ  z$TestShapeInference.test_conv_stridesc              	   C  rD  )
NrK   r   r   r!  r  r   r   rF  r9  r   r   r   rN   r   r   rN   r  r   rA  r  r  r  r   r   r.   r.   r/   test_conv_padsI  rJ  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 )
NrK   rM  r   rA  r   r   r   rN   r9  r   
SAME_UPPER)auto_pad)r   rA  r!  r  r   r   r   r.   r.   r/   test_conv_auto_padV     

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 )NrK   rM  r   rR  r9  r   rS  rN   rN   r   rT  r  )r   rA  r   r   r   r   r   r.   r.   r/   test_conv_auto_padsc  s   

z&TestShapeInference.test_conv_auto_padsc              
   C  rW  )NrK   )r   r   A   r  ?   r   rR  r9  r   rS  r   )rT  r  )r   rA  r[  r  r\  r   r   r.   r.   r/   test_conv_auto_pad_dilationt  s   

z.TestShapeInference.test_conv_auto_pad_dilationc              	   C  rQ  )
NrK   rE  r   r   r   r:  r:  r:  r9  r   r   groupr   r   r   r   r   r   r   r.   r.   r/   test_conv_group  rV  z"TestShapeInference.test_conv_groupc              	   C  r@  )
NrK   r   r   )rA  r   r8   r9  r   rN   r  )r   rA  r   r   r   r.   r.   r/   test_conv_only_one_pos  rC  z)TestShapeInference.test_conv_only_one_posc              	   C  rD  )
NrK   r   r   Nr  r   r   rF  r9  r   rN  r  r   rA  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 )	NrK   rM  r   rA  r   Nr   r   r9  r   rN  r  r   r   r.   r.   r/   &test_conv_partial_missing_weight_shape  rJ  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)rk  kv_num_heads
kv_seq_lenrn  V)rk  rp  rq  v_head_size	Attention)rj  ro  rr  r   )rk  rl  rm  rs  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 )
NrK   rM  AveragePoolr   rS  )r   r   rN   rX  rT  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   r8   r   r   r   rv  r   rN   r   r  r8   r   rN   rN   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   rz  rv  r   rS  rN   r   rT  r   r  r  r|  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  r  )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rN   r8   r   SequenceConstructr  r  r  in_sequencer  output_sequencerN   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   rz   tensor_type_protooptional_type_protor.   r.   r/   test_identity_optional8	  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   rz   r  sequence_type_protor  r.   r.   r/   test_identity_optional_sequenceK	  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 )NrK   r   r   Addr   r   r   r.   r.   r/   test_addi	     

zTestShapeInference.test_addc                 C  r  )NrK   r   r   Powr   r   r   r.   r.   r/   test_powv	  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 )NrK   rN   r   r   r   BitShiftr   RIGHT	directionr`   r   UINT32r   r   r   r   r.   r.   r/   test_bitshift	  rV  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 )	NrK   )   r   r   r   r  r  r   r  r  r  r   r.   r.   r/    test_bitshift_broadcast_to_first	     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 )	NrK   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  r  )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 )NrK   r   r   r   r  r'  r(  r   r   r.   r.   r/   test_sum_multi	  r  z!TestShapeInference.test_sum_multic                 C  ri  )NrK   )r   r   r8   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 )NrK   )r   r   r8   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  )rh  r   )r`   r   r   r5  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(  rg  r`   r   r   r   r5  r   r   r   r.   r.   r/   "test_random_normal_like_with_dtype	     z5TestShapeInference.test_random_normal_like_with_dtypec                 C  r  )NrK   rv  	Bernoullir(  r   r   r.   r.   r/   test_bernoulli	  r  z!TestShapeInference.test_bernoullic              	   C  r  )NrK   r   r  r(  rg  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 )NrK   r   r   r   r`   r   r   r   r   r  rY   r   r  rz   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 )NrK   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_or2
  r  z"TestShapeInference.test_logical_orc                 C  r  )NXorr  r  r.   r.   r/   test_logical_xor6
  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_equalB
  r  zTestShapeInference.test_equalc                 C  r  r  )r  r   r   r  r  r.   r.   r/   test_equal_stringF
  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 )NrK   r   Notr   )r`   r   r  r   r   r   r   r.   r.   r/   test_logical_notJ
     z#TestShapeInference.test_logical_notc                 C  r  )NLessOrEqualr  r  r.   r.   r/   test_less_or_equalR
  r  z%TestShapeInference.test_less_or_equalc                 C  r  )NGreaterOrEqualr  r  r.   r.   r/   test_greater_or_equalV
  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 )NrK   rN   r   r   r8   Flattenr   rN   r"  )r     r   r   r.   r.   r/   test_flattenZ
  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 )NrK   r  r  r   )rN   <   r   r   r.   r.   r/   test_flatten_default_axisd
  r  z,TestShapeInference.test_flatten_default_axisc              	   C  r  )NrK   r  r  r   r   r"  )r   x   r   r   r.   r.   r/   test_flatten_zero_axisn
  r   z)TestShapeInference.test_flatten_zero_axisc              	   C  r  )NrK   )rN   r   r   r8   r  r   rN   r"  )Nr  r   r   r.   r.   r/   test_flatten_unknown_dimx
  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  rK   rN   r   d   r  SpaceToDepthr   	blocksizerN   ,  r  r  r   rY   r   rz   r.   r.   r/   test_space_to_depth
     z&TestShapeInference.test_space_to_depthc              	   C  r  )Nr  rK   )rN   r   r  r  r  r   r  )rN   Nr  r  r   r  r.   r.   r/   test_space_to_depth_unknown_dim
  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  rK   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 )
NrK   wr   rRNNrK   r
  r  alllasthidden_sizer   rY   r  r  r  r	  rz   r.   r.   r/   _rnn_forward
  s*   zTestShapeInference._rnn_forwardc                 C     |  dddd d S Nr      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 )NrK   r
  rN   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 )Nr  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 )NrK   r
  r   r  r  r  r  r  )r  layoutr  r  rN   r   )rY   r  r  r  r	  r  rz   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 )NrK   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_forward7  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 )NrK   r   r   r8   r  TopKkr   r   r  r   r  )r   r   r8   rN   r`   r   r   r   r   rX   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 )NrK   r%  r&  r'  r   r   rN   r"  r  r   r  )r   r   rN   r  r(  r   r.   r.   r/   	test_topkI  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 )NrK   r%  r&  r'  r   r   rN   r"  r  r   ru  rg  Tri  r  )r   r   r   r  )r`   r   r   r   r   rX   r   rl  rm  r   r   r   r.   r.   r/   test_topk_raw_dataX  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 )NrK   r%  r'  r  r&  r   r   rN   r"  )NNNNr  r   r.   r.   r/   +test_topk_missing_k_value_output_rank_checko  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 )
NrK   r!  r8   r   r8   r~  r   Gemmr'  r(  r!  r~  r   r   r.   r.   r/   	test_gemm  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 )NrK   r8   r!  r   r.  r   r/  r'  r(  r   )transAr0  r   r   r.   r.   r/   test_gemm_transA     


	z#TestShapeInference.test_gemm_transAc              	   C  r2  )NrK   r-  r   r~  r8   r   r/  r'  r(  r   )transBr0  r   r   r.   r.   r/   test_gemm_transB  r6  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 )NrK   r3  r   r7  r   r/  r'  r(  r   )r4  r8  r0  r   r   r.   r.   r/   test_gemm_transA_and_transB  s   


	z.TestShapeInference.test_gemm_transA_and_transBc                 C  r  )NrK   )   r!  r   )r!     r/  r(  )r;  r<  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 )NrK   r  r   r~  ReduceL1r   r   r   r  keepdimsr  r   r  r  r;  r  r   r`   r   r   r   r   rX   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 )NrK   r@  r  r   rA  r   r   rC  r   r  r  r  rD  r   r`   r   r   rX   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 )NrK   r  r   r~  rA  r   r  r   rB  r  r  r;  r+   r-   r  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 )NrK   rK  r  r  rA  r   r   rH  r  r  r  rL  rM  r   )	r`   r   r   rX   r   r   r
   r   r   r  r.   r.   r/    test_reduce_op_empty_set_opset18  s   
z3TestShapeInference.test_reduce_op_empty_set_opset18c              	   C  r?  )NrK   r@  rA  r   r   r   rB  r  r   r  r  r;  r  r   r   r   rE  r  r.   r.   r/   &test_reduce_op_shape_keep_dims_opset13  s   
z9TestShapeInference.test_reduce_op_shape_keep_dims_opset13c              	   C  rG  )NrK   r@  r  r   rA  r   r   rH  r   r  r  r  rP  r   rI  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 )NrK   r@  rA  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 )NrK   r@  rA  r   r   rH  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	  )
NrK   r@  r  r   rA  r   )r$   r0  r  rP  r  r   r.   r.   r/   "test_reduce_op_shape_negative_axis5  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 )NrK   r@  ArgMaxr   r   r#  rC  rM  r`   r   r   r   r   r   rX   r   r.   r.   r/   test_argmax_shape@     z$TestShapeInference.test_argmax_shapec              
   C  rV  )NrK   r@  rW  r   r   rX  )r   r~  rY  r   r.   r.   r/   test_argmax_shape_keepdimsJ  r[  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 )NrK   r@  rW  r   )r   r   r~  rY  r   r.   r.   r/   test_argmax_shape_default_valueT  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 )NrK   r@  rW  r   r0  r"  rM  rY  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_dropoutf  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_LRN  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 )NrK   r7  r  rU  r   meanvarBatchNormalizationrK   r  r   rj  rk  r(  r   r   r.   r.   r/   test_batch_norm      




z"TestShapeInference.test_batch_normc              	   C  ri  )NrK   r  r  r  r   rj  rk  rl  rm  r(  r   r   r.   r.   r/   test_batch_norm_rank1  ro  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 )NrK   rp  r  r   r   r  rj  rk  rl  rm  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 )
NrK   r   Splitr   r   r$   rN   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 )NrK   r   splitr   rt  r   r   r   r"  rp  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 )NrK   )rN   r   r   ry  r   rt  r   r   r   r"  rp  r  )rN   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  rs  )
NrK   r  rt  r   r   r   rN   ru  r8   r   r!  r   r   r.   r.   r/   test_split_from_GLU  rx  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 )NrK   )r:  rN   rt  r   r   r   r   r   ru  r   r  r   r   r  r   r   r.   r.   r/   test_split_uneven_split_2d      z-TestShapeInference.test_split_uneven_split_2dc              
   C  r~  )NrK   )rN   r!  r   rt  r  r   r   ru  r   rN   r   r   r   r   rN   r   r   r   r   r.   r.   r/   test_split_uneven_split_3d  r  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 )NrK   r  rt  r   r   r   rN   ru  Sigmoidr   r|  r   r   r.   r.   r/   test_GLU_partial  s   z#TestShapeInference.test_GLU_partialc              
   C  s   |  dtjdfgtddgddgdddtd	dgd
gtddd
gdggg }| |tdtjdtdtjdtd
tjdtdtjdg d S )NrK   r  rt  r   r   r   rN   ru  r  r   Mulr   r|  r   r   r.   r.   r/   test_GLU0  s    	zTestShapeInference.test_GLUc                 C  r  )NrK   r   r8   Softmaxr   r   r   r.   r.   r/   test_softmax_2dD  r  z"TestShapeInference.test_softmax_2dc                 C  r  )NrK   r  r  r   r   r   r.   r.   r/   test_softmax_3dL     z"TestShapeInference.test_softmax_3dc                 C  r  )NrK   r  Hardmaxr   r   r   r.   r.   r/   test_hardmax_2dV  r  z"TestShapeInference.test_hardmax_2dc                 C  r  )NrK   r  r  r   r   r   r.   r.   r/   test_hardmax_3d^  r  z"TestShapeInference.test_hardmax_3dc                 C  r  )NrK   r  
LogSoftmaxr   r   r   r.   r.   r/   test_logsoftmax_2dh  r  z%TestShapeInference.test_logsoftmax_2dc                 C  r  )NrK   r  r  r   r   r   r.   r.   r/   test_logsoftmax_3dr  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 )NrK   r  r  r   r$   r"  r   r   r.   r.   r/    test_logsoftmax_3d_negative_axis|  r[  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   rz  MaxPoolr   rN   r   r8   r   r   r   r   r   r.   r.   r/   test_maxpool     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   rz  r  r   ZrN   r  r  rY  r   r.   r.   r/   test_maxpool_with_indices  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   r8   r   r   r   r   r  r   r*  r  r8   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   rz  r  r   rN   r   r   rN   rN   r   r  r8   r   r  r  r   r   r.   r.   r/   test_maxpool_with_padding  r~  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   rz  r  r   rN   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   rN   Fr   r  	ceil_mode)r  r  r<  r<  r   r   r.   r.   r/   test_maxpool_with_floor_mode      
z/TestShapeInference.test_maxpool_with_floor_modec                 C  r  )	Nr   r  r  r   rN   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   rN   Tr  r  r   r   r.   r.   r/   test_maxpool_ceil  r  z$TestShapeInference.test_maxpool_ceilc              
   C  ry  )Nr   rz  r  r   rN   r{  r|  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   rz  r  r   rS  rN   rw  r|  r   r   r.   r.   r/   /test_maxpool_with_same_upper_padding_and_stride      
zBTestShapeInference.test_maxpool_with_same_upper_padding_and_stridec                 C  r  )
Nr   rz  r  r   rS  rN   r   r  r|  r   r   r.   r.   r/   <test_maxpool_with_same_upper_padding_and_stride_and_dilation  r  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   rz  r  r   rS  rN   r   rw  r   r   r.   r.   r/   3test_maxpool_with_same_upper_padding_and_stride_one3  r  zFTestShapeInference.test_maxpool_with_same_upper_padding_and_stride_onec                 C  r  )	Nr   r8   r   r
  r
  r  r   
SAME_LOWERrN   rw  r8   r   r8   r8   r   r   r.   r.   r/   /test_maxpool_with_same_lower_padding_and_strideF  r  zBTestShapeInference.test_maxpool_with_same_lower_padding_and_stridec                 C  r  )
Nr   r  r  r   r  rN   r   r  r  r   r   r.   r.   r/   <test_maxpool_with_same_lower_padding_and_stride_and_dilationY  r  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   rz  r  r   r  rN   r   rw  r8   r   r   r   r   r   r.   r.   r/   3test_maxpool_with_same_lower_padding_and_big_stridem  r  zFTestShapeInference.test_maxpool_with_same_lower_padding_and_big_stridec              	   C  r  )Nr   rz  rv  r   rN   r  r  r   r   r.   r.   r/   test_averagepool  r  z#TestShapeInference.test_averagepoolc              	   C  r  )Nr   r  rv  r   r*  r  r  r   r   r.   r.   r/   test_averagepool_3D  r  z&TestShapeInference.test_averagepool_3Dc              
   C  r  )	Nr   rz  rv  r   rN   r  r  r  r   r   r.   r.   r/   test_averagepool_with_padding  r~  z0TestShapeInference.test_averagepool_with_paddingc                 C  r  )	Nr   rz  rv  r   rN   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  rv  r   r   rN   Tr  r  r   r   r.   r.   r/   test_averagepool_ceil  r  z(TestShapeInference.test_averagepool_ceilc              	   C  r  )Nr   rz  LpPoolr   rN   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   rz  r  r   rN   r  r  r  r   r   r.   r.   r/   test_lppool_with_padding  r  z+TestShapeInference.test_lppool_with_paddingc                 C  r  )	Nr   rz  r  r   rN   r  r  r  r   r   r.   r.   r/   #test_lppool_with_padding_and_stride  r  z6TestShapeInference.test_lppool_with_padding_and_stridec              
   C  ry  )Nr   rz  r  r   rN   r{  r|  r   r   r.   r.   r/   test_lppool_with_dilations  r  z-TestShapeInference.test_lppool_with_dilationsc                 C  r  )
Nr   rz  r  r   rS  rN   r   r  r|  r   r   r.   r.   r/   ;test_lppool_with_same_upper_padding_and_stride_and_dilation  r  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   rz  rois)rN   r8   
MaxRoiPoolr   rN   )pooled_shape)rN   r   rN   rN   r  r   r.   r.   r/   test_roipool  s   

zTestShapeInference.test_roipoolc                 C  r  )NrK   r7  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 )	NrK   r7  r  rU  r   InstanceNormalization)rK   r  r   r(  r   r   r.   r.   r/   test_instance_norm.  r  z%TestShapeInference.test_instance_normc                 C  r  )Nr   rz  GlobalMaxPoolr   r  r   r   r.   r.   r/   test_global_maxpool<  r  z&TestShapeInference.test_global_maxpoolc                 C  r  )Nr   rz  GlobalAveragePoolr   r  r   r   r.   r.   r/   test_global_averagepoolF  r  z*TestShapeInference.test_global_averagepoolc                 C  r  )Nr   rz  GlobalLpPoolr   r  r   r   r.   r.   r/   test_global_lppoolP  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   rN   r  )r  r  !   r  r   r   r.   r.   r/   test_conv_transposeZ  rJ  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   rN   r  )r  r  r  r  r   r   r   r   r.   r.   r/   test_conv_transpose_with_padsg     

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   rN   r  $   )r  r  r   )r  r  r  r  r   r   r.   r.   r/   %test_conv_transpose_with_output_shapex  r?  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   rN   r  )r   r  r  r  r   r   r.   r.   r/   %test_conv_transpose_with_kernel_shape  r?  z8TestShapeInference.test_conv_transpose_with_kernel_shapec                 C  r  )Nr   r  r  r  r  r   rN   r  r   )r  r  r  )r  r  "   r  r   r   r.   r.   r/   "test_conv_transpose_with_dilations  r?  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   rN   r  )r  r  r`  )r  r  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   rN   r  r  )r  r  r`  r   )r  r  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   rk  r  r  )r   r  rk  r   rS  r   )r   r   r   r   )rT  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   rS  rN   rY  )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   rN   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   sequencerN   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bodyr:  r   r   r   rV   r   r   r   r`   r   r   r   r   )	rY   
batch_sizeseq_len
input_sizeloop_state_sizer[   output_value_infosr  rz   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  rN   r   r  r   r  r  r  r  r  r  r  r  r  r   r  r
  r   r  )rY   r  r  r  r[   r  r  rz   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  rN   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  rz   r.   r.   r/   test_scan_opset9_axes  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  rN   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  rN   r   r  r   r  r  r  r  r  r  r  r  r  r   r0  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   r   r   r   r   rV   r`   r  r   r   r   r   rY   r  r  rz   r.   r.   r/   test_if_ver1A  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   r   r   r   r   rV   r`   r  r   r   r"  r.   r.   r/   test_ifm  >   



	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  r8   r  r  r  r  rQ   r$  r"  r.   r.   r/   3test_if_with_different_shapes_in_then_else_branches  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   r:  r  r  r  r  r  	r   r`   r   r  r   rX   r   r   r   rY   
then_graph
else_graphrz   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  r0  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  r8   else_optional_outputelse_tensor_valuer  r  r  r'  r  r  r  rQ   )r   r  r   rV   r  r  r   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  rz   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   rN   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 )NrA  r  rB  r   rU  rC  )rA  rB  r   r   rN   rD  )r`   r   r   r   r   r   r   r.   r.   r/   &test_maxunpool_shape_with_output_shapeN  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  rG  rH  r   )rN   rN   Nr`   r   rX   r   r   r   r   r   r.   r.   r/   test_onehot_without_axisd  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  rN   r   r8   rG  r  rH  r   rI  rJ  r   r   r"  )rN   Nr   r8   rK  r   r.   r.   r/   test_onehot_with_axisr  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  rG  r.   rH  r   rI  rJ  r      r  )rN   rN   rP  r`   r   rX   r   r   r   r   r   r   r.   r.   r/   test_onehot_without_axis_2  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  rM  rG  r  rH  r   rI  rJ  r   r   r"  rO  r  )rN   rP  r   r8   rQ  r   r.   r.   r/   test_onehot_with_axis_2  s   



z*TestShapeInference.test_onehot_with_axis_2c              	   C  s   t dtjdt dtjd t dtjdg}t dtjd t dtjd t dtjd	g}ttd
dgdgtd
dgdgtd
dgdggd||}| dtjdfdtjdfdtjdfdtjd	fgtd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)rX  rY  r  r  loop_outputr  Nr   
r   r   rX   rV   r   r   r   r   r`   r   rY   r[   r  r  rz   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 )NrT  r  rU  rV  r  r   r  rW  r  rX  rY  rZ  r[  r\  r]  r^  r_  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 )NrG  r   r   r  rH  ConstantOfShaper   rI  r  r   r`   r   r   r   rX   rY  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   rb  r   rI  r  r   rH  r&  r`   r   rX   r   r   r   r   r   r   r.   r.   r/   (test_constantofshape_without_input_shape     z;TestShapeInference.test_constantofshape_without_input_shapec                 C  rf  )
Nr   r  rb  r   rI  r  r   rH  r.   rg  r   r.   r.   r/   /test_constantofshape_without_input_shape_scalar)  ri  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 )
NrG  r   r  r  rH  rb  r   rI  r   rc  r   r.   r.   r/   $test_constantofshape_with_shape_zero:  re  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 )NrK   r7  r   r8  ConvIntegerr   r:  r   r;  r<  r=  r`   r   r   r   r   r   rY  r   r.   r.   r/   test_convintegerU  r?  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 )NrK   rE  r   rF  x_zero_pointr.   y_zero_pointrl  rK   r   ro  rp  r   rG  r  rH  r`   r   r   INT8r   r   r   rY  r   r.   r.   r/   test_convinetger_dilationsk  $   



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 )NrK   rE  r   rF  ro  r.   rp  rl  rq  r   rG  r  rK  )r`   r   rs  r   r   r   r   rY  r   r.   r.   r/   test_convinteger_strides  ru  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 )
NrK   rM  r   rF  rl  r   rN  r  rO  rr  r   r.   r.   r/   test_convineteger_pads  rJ  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 )
NrK   rE  r   r^  rl  r   r   r_  ra  )r`   r   rs  r   r   r   rY  r   r.   r.   r/   test_convineteger_group  rV  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 )NrK   rd  r   rF  ro  r.   rp  rl  rq  r   rN  r  re  rm  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 )	NrK   rM  r   rg  rl  r   rN  r  rm  r   r.   r.   r/   .test_convineteger_partial_missing_weight_shape  rJ  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 )NrK   r7  x_scaler.   ro  r
  r8  w_scalew_zero_pointy_scalerp  QLinearConvrK   r{  ro  r
  r|  r}  r~  rp  r   r:  r   r;  r<  r=  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 )NrK   rE  r{  r.   ro  r
  rF  r|  r}  r~  rp  r  r  r   rG  r  rH  r  r   r.   r.   r/   test_qlinearconv_dilations  ,   








z-TestShapeInference.test_qlinearconv_dilationsc                 C  r  )NrK   rE  r{  r.   ro  r
  rF  r|  r}  r~  rp  r  r  r   rG  r  rK  r`   r   rs  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 )NrK   rM  r{  r.   ro  r
  rF  r|  r}  r~  rp  r  r  r   rN  r  rO  )r`   r   r   r   rs  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 )NrK   rE  r{  r.   ro  r
  r^  r|  r}  r~  rp  r  r  r   r   r_  ra  r  r   r.   r.   r/   test_qlinearconv_groupc  s,   








z)TestShapeInference.test_qlinearconv_groupc                 C  r  )NrK   rd  r{  r.   ro  r
  rF  r|  r}  r~  rp  r  r  r   rN  r  re  r  r   r.   r.   r/   &test_qlinearconv_partial_missing_shape  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 )NrK   rM  r{  r.   ro  r
  rg  r|  r}  r~  rp  r  r  r   rN  r  r  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_pointr~  rp  QLinearMatMul)r   r  r  r   r  r  r~  rp  r   )r   r   r   r   r   r   r`   r   r   r   r   r   r   rY   r   r   r   rz   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  r  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Ark  r  r.   r  MatMulInteger)r  rk  r  r  r   )r   r   r   r   r   r   r`   r   r   r   r   r   rY  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_matmulintegerH  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 )	NrK   r   r~  r.   rp  QuantizeLinearrK   r~  rp  r   r`   r   r   r   r   r   rY   r   rz   r.   r.   r/   test_quantizelinearP  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 )NrK   r   r~  r.   r  r   r`   r   r   r   r   r   r   r   r.   r.   r/   test_quantizelinear_default_zpa  r>  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 )NrK   r   r~  r.   r  )rK   r~  r  r   r  r   r.   r.   r/   "test_quantizelinear_optional_inputk  r>  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 NrK   r  r~  r.   r  r   output_dtype)r`   r   r   r   UINT4r   r   r   r.   r.   r/    test_quantizelinear_output_dtypeu  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 
NrK   r  r~  r.   rp  r  r  r   r  )r`   r   r   UINT16r   r   r   r   r.   r.   r/   #test_quantizelinear_zp_output_dtype  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 )	NrK   r   r{  r.   ro  DequantizeLinear)rK   r{  ro  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 )	NrK   r   DynamicQuantizeLinear)r   r~  rp  r   r~  r.   rp  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 )NrK   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   rN   r   rN   Uniquer   r  inverse_indicescountsr   rQ   r  r  r  rY  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   )rN   NrN   r  rQ   r  r  rY  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   r8   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 )
NrK   r  repeatsr   Tiler   rG  r  r   r  r  r  r   r.   r.   r/   	test_tile3     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 )NrK   r  r  r   r  r   rG  ru  rg  Tri  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 )NrK   r  r  r   r  r   r&  r  r   r.   r.   r/   test_tile_rank_inferenceQ  r>  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 )NrK   r'  LinearClassifierr   r   g-C6J?g-C6Jrd  r   rN   r+   coefficients
interceptsclasslabels_intsr  r   r~  r   
r`   r   r   r   r   r   r   rX   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 )NrK   r  r  r   r   )皙?皙?g333333?皙?rd  g333333?)rd  rd  g      @rG  r  rU  r  r   r~  r   r  r   r.   r.   r/   test_linearclassifier_2D_inputx  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 )NrK   r  r  num_roisr   batch_indicesr  RoiAlignrK   r  r  r   r  r8   )output_heightoutput_width)r  r  r  r8   r  r   r.   r.   r/   test_roialign_symbolic  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 )NrK   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  )NrK   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   )rk  	num_headsr  rn  	cos_cachemax_seq_lenhead_size_div_2	sin_cacheposition_idsrk  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   )rk  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 )NrN   z7keys_* attributes were introduced in ai.onnx.ml opset 2)r  mr   )g{GW@g      B@g     X)r     V   rK   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   rX   r   r   r   )rY   r   r-   string_list
float_list
int64_listrz   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   rN   r   r   rK   r4  Nr   r  r  r   default_tensorr   r   r+   r  r   r  r~  r   )r   r   r   r   rX   r`   r   r   r   r   r   r   )rY   r   r-   
key_tensorr   rz   r.   r.   r/   $test_label_encoder_tensor_attributes  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~  rK   r  r  r   r  r   r   r  r   rN   r   r   )r+   r  r  r  )r   r   r   r   rX   r   r   r   r`   r   rY  r   ri   rj   r   ro   )rY   r   r-   r  r   r   rz   r.   r.   r/   ;test_label_encoder_tensor_attributes_invalid_configurations  sl   
zNTestShapeInference.test_label_encoder_tensor_attributes_invalid_configurationsr   rH  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|   rH  CopyFromr   r   r   rX   r  )rY   r   rH  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  )r;  r<     r   )r
     Q   rG  r   )sparse_value)r  r`   r   r   r   r   rX   )rY   y_shapey_valuerz   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 )NrG  r   *   )	value_int)r`   r   r   r   r   rX   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 )NrG  rG  r   )
value_ints)r`   r   r   r   r   rX   r|   )rY   r  rz   r.   r.   r/   test_constant_value_ints$     z+TestShapeInference.test_constant_value_intsc              	   C  r  )NrG  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)rN  rO  g333333?rG  r   )value_floats)r`   r   r   r   r   r   r|   )rY   r#  rz   r.   r.   r/   test_constant_value_floats5  r   z-TestShapeInference.test_constant_value_floatsc              	   C  r  )NrG  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(  rK   rG  r   )value_strings)r`   r   r   r   r   r   r|   )rY   r)  rz   r.   r.   r/   test_constant_value_stringsF  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_rangeP  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  rQ   )r`   r   rY  r   r   r   r   r   r.   r.   r/   test_range_rank_inferencec  r  z,TestShapeInference.test_range_rank_inferencec                 C  r  )NrK   r  r  r   GatherNDr   r  r  r   r.   r.   r/   test_gatherndu  r>  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 )
NrK   r*  r  r   r1  r   r   )
batch_dimsr  r  r   r.   r.   r/   test_gathernd_batchdim_1  rC  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 )NrK   r   r#  r  CumSumr   r   r   r.   r.   r/   test_cumsum  s   zTestShapeInference.test_cumsumc                 C  sN   |  dtjdfdtjdfgtdddgdggg }| |tdtjdg d S )Nboxesr   r   r   scores)r   r8   r   NonMaxSuppressionr   r]  rY  r   r.   r.   r/   test_nonmaxsuppression  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  rA  z4TestShapeInference.test_sequence_construct_diff_rankc                 C  ri  )Nr  r   r  rM  r  rq  r  r  r  rN   r   Nr  r   r.   r.   r/   %test_sequence_construct_diff_dim_size  rA  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  rF  r   r  r  r  rG  r  r  r   r.   r.   r/   test_sequence_insert_diff_rank!  rI  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  rF  rN   r8   rN   r  r  r  rG  r  r  rN   NNr  r   r.   r.   r/   test_sequence_insert_diff_shape?  rI  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   rX   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  rN  r.   r  r  r  rO  r  rP  r   r.   r.   r/   test_sequence_at_unknown_shapew  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  rM  r  rN  r.   r  r  r  rO  r  rD  rP  r   r.   r.   r/   !test_sequence_at_unknown_dim_size  rR  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  rN  r.   r  r  r  SequenceEraser  r`   r   r   rX   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  rN   r   rK   r  r  )rN   r8   rK   rN  r.   r  r  r  rU  r  rN   NrK   rV  r   r.   r.   r/   !test_sequence_erase_diff_dim_size  rX  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  rY  r  r  r  r  r  SequenceLengthr|   r.   )r`   r   r   r   r   r   r   rX   r   r.   r.   r/   test_sequence_length  s(   


z'TestShapeInference.test_sequence_lengthc              	   C  r  )
Nr   r  r   ry  r   SplitToSequencer  r  r  rv  r`   r   r   rY  r   r   r   r   r   r.   r.   r/   test_split_to_sequence     z)TestShapeInference.test_split_to_sequencec              	   C  r  )
Nr   r^  ry  r.   r_  r  r   r  r   r`  r   r.   r.   r/   test_split_to_sequence_scalar
  rb  z0TestShapeInference.test_split_to_sequence_scalarc              	   C  r  )Nr   r^  r_  r  r   rH  r2  r  r   r.   r.   r/   test_split_to_sequence_keepdims     z2TestShapeInference.test_split_to_sequence_keepdimsc              	   C  r  )Nr   r^  r_  r  r   rH  rU  r  r   r.   r.   r/   #test_split_to_sequence_not_keepdims)  re  z6TestShapeInference.test_split_to_sequence_not_keepdimsc              	   C  sd   | j dtjdfdtjdfgtdddgdgddgg tdtjdd	gd
}| |tdtjdg d S )Nr   r^  ry  r   r_  r  r   rH  r  r  rv  r`  r   r.   r.   r/   &test_split_to_sequence_ignore_keepdims8  s&   z9TestShapeInference.test_split_to_sequence_ignore_keepdimsc              	   C  r  )Nr   r^  r_  r  r   r"  r  r  r   r.   r.   r/   test_split_to_sequence_axisO  re  z.TestShapeInference.test_split_to_sequence_axisc              	   C  r  )Nr   r^  r_  r  r0  r"  r2  r  r   r.   r.   r/   test_split_to_sequence_neg_axis^  re  z2TestShapeInference.test_split_to_sequence_neg_axisc              	   C  r  )
Nr   r^  ry  r   r_  r  r  r  Nr   r`  r   r.   r.   r/   "test_split_to_sequence_split_sizesm  rb  z5TestShapeInference.test_split_to_sequence_split_sizesc              	   C  r  )
Nr   r^  ry  r.   r_  r  rU  r  rj  r`  r   r.   r.   r/   $test_split_to_sequence_non_divisible}  rb  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  rY  r  r  r  r  r  ConcatFromSequencer(  r   r"  )Nr   rK   r`   r   r   r   r   r   r   r   r.   r.   r/   test_concat_from_sequence  (   


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  rY  r  r   r  r  r  r  rm  r(  r   r"  rn  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  rY  r  rN   r   rK   r  r  r  r  rm  r(  r   r"  rZ  NNrK   rn  r   r.   r.   r/   *test_concat_from_sequence_unknown_dim_size  rp  z=TestShapeInference.test_concat_from_sequence_unknown_dim_sizec              
   C  rr  )Nr  rY  r  rs  r  r  r  r  rm  r(  rN   r"  rZ  rL  rn  r   r.   r.   r/   test_concat_from_sequence_axis  rp  z1TestShapeInference.test_concat_from_sequence_axisc              
   C  rr  )Nr  rY  r  rs  r  r  r  r  rm  r(  r"  rZ  rt  rn  r   r.   r.   r/   "test_concat_from_sequence_neg_axis  rp  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  rY  r  r  r  r  r  rm  r(  rN   r   r#  new_axis)rN   r   NrK   rn  r   r.   r.   r/   "test_concat_from_sequence_new_axis  ,   


z5TestShapeInference.test_concat_from_sequence_new_axisc                 C  ry  )Nr  rY  r  r  r  r  r  rm  r(  r$   r   rz  )rN   r   rK   Nrn  r   r.   r.   r/   &test_concat_from_sequence_neg_new_axis#  r}  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)r  r  r   r  r  X_newH_newr9   r  r   r   r`   r   r   rX   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 )Nr  r.   r  X1r   X2rv  G1G2H1H2r  )r  r  r  r  r  r  r  r  )X1_newX2_newH1_newH2_newr9   r  r  r  r  r  r   r   r  r   r.   r.   r/   test_adagrad_multiple^  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 )Nr  r.   r  r   r   r  rr  Momentum)r  r  r   r  rr  r  V_new?rN  {Gz?standardre  rf  norm_coefficientr  r+   r  r   r   r  r   r.   r.   r/   test_momentum  s:   







z TestShapeInference.test_momentumc                 C  s   |  dtjdfdtjdfdtjdfdtjdfdtjdfd	tjdfd
tjdfdtjdfgtd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 )Nr  r.   r  r  r   r  rv  r  r  V1V2r  )r  r  r  r  r  r  r  r  )r  r  V1_newV2_newr  rN  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 )Nr  r.   r  r   r   r  rr  r  Adam)r  r  r   r  rr  r  )r  r  r  r  rN  r  r+   re  rf  r  r  r  r  r   r  r   
r`   r   r   rX   r   r   r   r   r   r   rY   rz   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 )Nr  r.   r  r  r   r  rv  r  r  r  r  r  r  r  )
r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  rN  r  r  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 )
NrK   r   NrN   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 )NrK   )rN   r   r   r   r  r   )r   r   r   r   r   r   r   rN   constantrd  )r  r  rI  )rN   r   r~  r!  r  r   r   r   r.   r.   r/   test_constant_pad_2d_opset100  s$   

z/TestShapeInference.test_constant_pad_2d_opset10c              	   C  r	  )
NrK   r  r  r2  r  r   r  r  r  r  r   r.   r.   r/   test_padE  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 )NrK   r2  r  r   r  r   r  r   r.   r.   r/   test_gatherelements_basic^  r>  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 )NrK   r2  r  r  r   r  r   r.   r.   r/   )test_gatherelements_indices_missing_shapeh  r  z<TestShapeInference.test_gatherelements_indices_missing_shapec              	   C  r  )NrK   rv  Einsumr   zij->jiequationr  r   r   r.   r.   r/   test_einsum_transposeu  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 )	NrK   r  r   r  r   i,i->r  r.   r   r   r.   r.   r/   test_einsum_dot     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 )NrK   r.   r   r  r   z,->r  r   r   r.   r.   r/   test_einsum_scalar  r  z%TestShapeInference.test_einsum_scalarc              	   C  sB   |  dtjdfgtddgdgddgg }| tjj| j| d S )NrK   r.   r  r   zi->ir  r   r   r.   r.   r/   #test_einsum_scalar_invalid_equation  s   z6TestShapeInference.test_einsum_scalar_invalid_equationc              	   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 )
NrK   r  r   )r!  r
  r  r   zij,ab->ijabr  )r   r8   r!  r
  r   r   r.   r.   r/   test_einsum_outer_prod  r  z)TestShapeInference.test_einsum_outer_prodc              	   C  r  )NrK   rv  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  )NrK   )r   r   r   r  r   z... ii ->... ir  rv  r   r   r.   r.   r/   test_einsum_ellipsis  r   z'TestShapeInference.test_einsum_ellipsisc              	   C  r  )
NrK   r   r   rN   r   r8   r  r   ...ij,...jk->...ikr  rM  r   r   r.   r.   r/   test_einsum_ellipsis_2  r  z)TestShapeInference.test_einsum_ellipsis_2c              	   C  r  )
NrK   r   r   r  r  r   z...ij,...jkr  rM  r   r   r.   r.   r/   test_einsum_ellipsis_3  r  z)TestShapeInference.test_einsum_ellipsis_3c              	   C  r  )
NrK   r:  r   )r  r   r8   r  r   r  r  )r  r   r8   r   r   r.   r.   r/   test_einsum_ellipsis_broadcast  r  z1TestShapeInference.test_einsum_ellipsis_broadcastc              	   C  r  )
NrK   )r8   r  r!  r:  r   )r:  r
  r  r  r   zabcd,dfg->abcfgr  )r8   r  r!  r
  r  r   r   r.   r.   r/   test_einsum_contraction     

z*TestShapeInference.test_einsum_contractionc              	   C  r  )
NrK   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  )
NrK   )r8   rN   r   r   )r8   r   r   r  r   zbij , b jk-> bikr  )r8   rN   r   r   r   r.   r.   r/   test_einsum_batch_matmul  r  z+TestShapeInference.test_einsum_batch_matmulc              	   C  r  )
NrK   r   r   rv  r  r   zij,klr  )rN   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 )NrK   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 )NrK   r   r  r   r  r  r   r   r.   r.   r/   test_einsum_view_A1  r   z&TestShapeInference.test_einsum_view_A1c              	   C  r  )NrK   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  )NrK   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  )	NrK   r   r   r  r   r  r  r.   r   r   r.   r.   r/   test_einsum_inner_product_A1_B11  r  z2TestShapeInference.test_einsum_inner_product_A1_B1c              	   C  r  )	NrK   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  )NrK   r  r  r   zij->ijr  r   r   r.   r.   r/   test_einsum_view_A2E  r   z&TestShapeInference.test_einsum_view_A2c              	   C  r  )NrK   r  r  r   ijr  r   r   r.   r.   r/   test_einsum_view_A2_2O  r   z(TestShapeInference.test_einsum_view_A2_2c              	   C  r  )NrK   r  r  r   jir  r   r   r.   r.   r/   test_einsum_transpose_A2Y  r   z+TestShapeInference.test_einsum_transpose_A2c              	   C  r  )NrK   r  r  r   zji->ijr  r   r   r.   r.   r/   test_einsum_transpose_A2_to_ijc  r   z1TestShapeInference.test_einsum_transpose_A2_to_ijc              	   C  r  )NrK   r  r  r   zii->ir  r   r   r   r.   r.   r/   test_einsum_diag_A2m  r   z&TestShapeInference.test_einsum_diag_A2c              	   C  r  )NrK   r  r  r   zii->r  r.   r   r   r.   r.   r/   test_einsum_trace_A2w  r   z'TestShapeInference.test_einsum_trace_A2c              	   C  r  )NrK   r  r  r   zij->r  r.   r   r   r.   r.   r/   test_einsum_sum_A2  r   z%TestShapeInference.test_einsum_sum_A2c              	   C  r  )NrK   r  r  r   zij->jr  r   r   r   r.   r.   r/   test_einsum_sum_columns_A2  s   z-TestShapeInference.test_einsum_sum_columns_A2c              	   C  r  )NrK   r  r  r   zij->ir  r   r   r   r.   r.   r/   test_einsum_sum_rows_A2  r   z*TestShapeInference.test_einsum_sum_rows_A2c              	   C  r  )NrK   r  r   r  r   z	ij,ij->ijr  r   r   r.   r.   r/   -test_einsum_element_wise_multiplication_A2_B2  r  z@TestShapeInference.test_einsum_element_wise_multiplication_A2_B2c              	   C  r  )NrK   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  )NrK   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  )NrK   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  )NrK   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  )NrK   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  )NrK   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  )	NrK   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  )	NrK   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 )	NrK   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  )	NrK   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  )	NrK   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  )	NrK   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 )Nrv  r   targetNegativeLogLikelihoodLosslossnone	reductionr  rY   r   r  rz   r.   r.   r/   (test_negative_log_likehood_shape_is_NCdd5  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 )
Nrv  r   r  weightr  r   r  r  r  r  r  r  r  r.   r.   r/   2test_negative_log_likehood_shape_is_NC_with_weightG  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 )	Nrv  r   r  r  r  rj  r  r.   r  r  r.   r.   r/   5test_negative_log_likehood_shape_is_NC_reduction_mean]  s   zHTestShapeInference.test_negative_log_likehood_shape_is_NC_reduction_meanc              	   C  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 )Nrv  r   r  r  r  r  r  rj  r  r.   r  r  r.   r.   r/   Atest_negative_log_likehood_shape_is_NC_with_weight_reduction_meano  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   r8   r  r   r  r  r  r  r  r  rY   r   r  d1d2rz   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_weight  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  rj  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  rj  r  )
r`   r   r   rX   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   rX   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  )	NrK   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  )
NrK   r   r   r   r  r   rj  r  r.   r   r   r.   r.   r/   test_softmax_cross_entropy_mean  r  z2TestShapeInference.test_softmax_cross_entropy_meanc              	   C  r  )	NrK   )rN   r   r8   r:  r   )rN   r8   r:  r  r   r  r  r   r   r.   r.   r/   &test_softmax_cross_entropy_none_NCD1D2  rC  z9TestShapeInference.test_softmax_cross_entropy_none_NCD1D2c              	   C  r  )
NrK   r  r   r  r  r   rj  r  r.   r   r   r.   r.   r/   &test_softmax_cross_entropy_mean_NCD1D2(  rC  z9TestShapeInference.test_softmax_cross_entropy_mean_NCD1D2c              	   C  r  )Nr   r  Celur   rd  )re  r   r   r.   r.   r/   test_celu_function_output_shape5  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  rK   r   r   r   c                 S  s   g | ]}d qS )        r.   r2   r  r.   r.   r/   r:   G  s    zHTestShapeInference.prepare_input_initializer_tensors.<locals>.<listcomp>rS   )inputsoutputsrF   rD   )	r   r&   r   r   r   r   r   r   rh   )
rY   initializer_shapeinput_shaperB   rF   rg  drj  r  rz   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r:  r!  Tr  r   r   )r  ri   rj   rk   rz   rD   rg   r   r   r   r   r   )rY   r  original_modelrn   z_tenorz_shaper.   r.   r/   3test_infer_with_initializer_without_input_above_ir4^  s   zFTestShapeInference.test_infer_with_initializer_without_input_above_ir4c                 C  sj   d}d}|  ||}d|_tjj|dd}|jj }|jj	j
jd j|jj	j
jd jf}|dks3J d S )	Nr  r1  r   Tr  r   r   r   r   )r  
ir_versionri   rj   rk   rz   rD   rg   r   r   r   r   r   )rY   r  r  r  rn   r  r  r.   r.   r/   3test_infer_with_initializer_without_input_below_ir4o  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  r1  Tr  r  ri   rj   rk   r  r.   r.   r/   1test_infer_initializer_input_consistency_all_none     zDTestShapeInference.test_infer_initializer_input_consistency_all_nonec                 C  r  )Nr  Nr!  Tr  r!  r  r.   r.   r/   4test_infer_initializer_input_consistency_single_none  r#  zGTestShapeInference.test_infer_initializer_input_consistency_single_nonec                 C  r  )N)r:  r!  r
  r$  Tr  r  r  r.   r.   r/   7test_infer_initializer_input_consistency_different_rank  s   
zJTestShapeInference.test_infer_initializer_input_consistency_different_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 )	NrK   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 )NrK   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 )NrK   )r   r8   r'  r.   r)  r   r   r+  r'  r  )r`   r   rX   r   r   r   r   r   r.   r.   r/   test_trilu_upper_zero  r/  z(TestShapeInference.test_trilu_upper_zeroc              	   C  r  )NrK   )r   r   r8   r)  r   r   r+  )r`   r   rY  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 NrK   r7  r  rU  r   
input_mean	input_varrl  rK   r  r   r4  r5  r(  output_mean
output_varr   training_moder(  r8  r9  r   r   r.   r.   r/   test_batch_norm_train  .   




z(TestShapeInference.test_batch_norm_trainc              	   C  r2  )NrK   )r   r  r8   r  r!  r  r  r   r4  r5  rl  r6  r7  r   r:  r(  r8  r9  r   r   r.   r.   r/   test_batch_norm_train_dim_param   r=  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 r3  )r`   r   r   r   r   r   r   r   r.   r.   r/   $test_batch_norm_train_with_diff_type$   r=  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 )NrK   r7  r  rU  r   r4  r5  rl  r6  r(  r   r:  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 )NrK   )r   r   NNNr  rU  r   r4  rQ   r5  rl  r6  r(  r   r:  r   r   r.   r.   r/   test_batch_norm_test_no_dimW   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 )NrK   r  r   r4  r>  r5  rl  r6  )r(  running_meanrunning_varr   r:  r(  rC  rD  r   r   r.   r.   r/   test_batch_norm_train_no_shapes   r=  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 )NrK   rQ   NonZeror(  )r   NrY  r   r.   r.   r/   test_nonzero   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 )NrK   rG  r(  r1  rY  r   r.   r.   r/   test_nonzero_no_shape      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 )NrK   r   rG  r   )NNZ)r   rK  )r`   r   r   r   r   rX   r   r   r.   r.   r/   test_nonzero_existing_dim_param   s   z2TestShapeInference.test_nonzero_existing_dim_paramc                 C  rF  )NrK   r.   rG  r(  )r   NrY  r   r.   r.   r/   test_nonzero_scalar   rJ  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 )NrG  r2  r  r*   
type_protor  r   	r   r  r   r   r  r  r`   r   r   rY   r  r  optional_val_inforz   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 )NrG  r2  r  rN  r  rP  )
r   r  r   rY  r  r  r  r`   r   r   )rY   r  r  r  rS  rz   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   r2  r  rN  r  r  rQ  rR  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)rN   r   r   r2  input_sequencerN  r  r  r  r  )
r   r  r   rX   r  r  r  r`   r   r   rY   r  r  sequence_val_infor  rS  rz   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   r2  r  rN  r  r  OptionalHasElementr  r.   )r   r  r   r   r  r  r`   r   r   r   r  rR  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   r2  r  rN  optionalr  r  r  r[  r  r.   )r   r  r   r   r  r  r  r`   r   r   r   r  rX  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rN   r   r   r2  r  rN  r   OptionalGetElement)r   r  r   r5  r  r`   r   r   )rY   r  output_tensor_val_inforz   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)rN   Nlengthr   rK   rc  r   
r   r   r   rX   r`   r   r   r   r   r   rY   r   r-   re  rf  rz   r.   r.   r/   test_string_split_basic8!  "   

z*TestShapeInference.test_string_split_basicc                 C  rd  )Nre  )r  Nrf  )r  rK   rc  r   rg  rh  r.   r.   r/   test_string_split_symbolicM!  rj  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 )
Nre  )rN   r   r   Nrf  r   rK   rc  rN   maxsplitr   rg  rh  r.   r.   r/   test_string_split_nestedb!  s   

z+TestShapeInference.test_string_split_nestedc              	   C  rl  )
Nre  rQ   rf  r.   rK   rc  rN   rm  r   rg  rh  r.   r.   r/   (test_string_split_zero_dimensional_inputu!  s   

z;TestShapeInference.test_string_split_zero_dimensional_inputc              	   C  rl  )
Nre  )r4  r   r   Nrf  )r4  r   r   rK   rc  rN   rm  r   rg  rh  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 )	Nr_  r2  r  rN  r]  r  r  r`  )	r   r  r   r5  r  r  r`   r   r   )rY   r  tensor_val_intor  rS  rz   r.   r.   r/    test_optional_tensor_get_element!  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)rN   r   r   r2  r  rN  r]  r  r  r  r  r`  )
r   r  r   rY  r  r  r  r`   r   r   )rY   r  r  sequence_val_intor  rS  output_val_intorz   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-  rK   r   Where)r  rK   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   rb  rK   r   r   rg  rI   r*   r  r  rB   rF   rz   Tr  r   r   )r   rh   r   r   r   r   r   r   
from_arrayr   rl  int32r   ri   rj   r   rk   assertFalserz   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   r{  rb  rK   r   r   rg  rI   r|  r}  r   Tr  r   rC  r   rR   r   rD  rA  r  )r   rh   r   r   r   r   r   r   r~  r   rl  int64rV   rz   rF   	data_typer   ri   rj   r   rk   r  r  r   r   r   r`   r   rX   r   r   )rY   r  rn   rz   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  thetarN   r   rg  rU  
AffineGridgridr   )align_cornersr  r  )rY   r   r  r  r  rz   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)rN   r   r   r8   r  r  r   r   rg  r'  r  r  r  r  )rY   r   r  Dr  r  rz   r.   r.   r/   test_affinegrid_3d3"  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 )NrK   r  r  )r   r   r   rN   
GridSampler   nearestborderr   r  padding_moder  r  r   r.   r.   r/   test_gridsample_2dH"  $   


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 )NrK   )r   r   r   r   r   r  )r   r   rN   r   r   r  r   r  r  r   r  )r   r   r   rN   r   r  r   r.   r.   r/   test_gridsample_3d^"  r  z%TestShapeInference.test_gridsample_3dc                 C  r  )NrK   r  r  )r   H_outW_outrN   r  r   )r   r  r  r  r   r   r.   r.   r/   test_gridsample_2d_defaultst"     

z.TestShapeInference.test_gridsample_2d_defaultsc                 C  r  )NrK   )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 )
NrK   )r   r  NNr  )r   NNrN   r  r   linearr  r  r  r   r   r.   r.   r/   test_gridsample_2d_no_dim"  s$   

	z,TestShapeInference.test_gridsample_2d_no_dimc              
   C  r  )
NrK   )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_sequencer\  	r   r   r   r   r   r   r`   r   r   rY   r[   r  r  rz   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  )r8   r   r   r  r  r  r  r  r\  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  rK   starts1ends1r  r  y1rK   starts2ends2r  r  y2r  rK   r  )r  r  r   )r   (   r   r  r   r+  r  r  r  r  r  r  r  r   r  rB   r*   r  r  rF   r  r  i6  r   r  n      r   r  Z   r  r   r  r  r  r  out_sequence1out_sequence2r\  r  r   r   r   ri   r   r   r   r   rX   r`   r   r   rY   r  rz   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  rK   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  r\  r  r  r  r.   r.   r/   )test_sequence_map_slice_outs_unknown_dimsY#  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  rK   r   r  )r  r  r  r   )rB   r*   r  r  r  r  r  r  r  r  r  r  r  r  shapesr\  r  )r   r   r   ri   r   r   r   rX   r`   r   r   r  r.   r.   r/   'test_sequence_map_different_tensor_type#  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 )
NrG  r   r.   r-  rH  HammingWindowr   r   periodicr`   r   r   r   rX   r   r   r   r   r.   r.   r/   test_hammingwindow#  H   		z%TestShapeInference.test_hammingwindowc                 C  r  )
NrG  r   r.   r-  rH  
HannWindowr   r   r  r  r   r.   r.   r/   test_hannwindow#  r  z"TestShapeInference.test_hannwindowc                 C  r  )
NrG  r   r.   r-  rH  BlackmanWindowr   r   r  r  r   r.   r.   r/   test_blackmanwindow$  r  z&TestShapeInference.test_blackmanwindowc           	   
   C  4   g | ]\\}}\}}}}}}||||||||fqS r.   r.   	r2   r*   r-   test_aspectr  r#  onesidedinverseexpected_shaper.   r.   r/   r:   B$  $    
zTestShapeInference.<listcomp>DFT))reals_default_axisrN   r8   r   NNNrK  )reals_axis_0r   r8   r  r   r   r   r   r   r8   r  rN   )reals_axis_1r  r   r   r   r  )reals_axis_2r  rN   r   r   r  )reals_axis_negr  r0  r   r   r  )reals_axis_0_onesidedr  r   r   r   )rN   r8   r  rN   )reals_axis_1_onesidedr  r   r   r   )r   r   r  rN   )reals_axis_2_onesidedr  rN   r   r   r   r8   r  rN   )reals_axis_neg_onesidedr  r0  r   r   r  )complex_default_axisrK  NNNrK  )complex_onesidedrK  r   r   N)rN   r   rN   )real_inverser  r   Nr   rK  )complex_inverserK  r   Nr   rK  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  rG  r.   rH  r   r  r#  r   r  r  rg  r   r   r   r   rX   r   r`   r   r   onesfloat32flattenr   r   r   r   )rY   r   r-   r  r  r#  r  r  r  
attributesrB   value_infosrz   r.   r.   r/   test_dftA$  sh   3	
zTestShapeInference.test_dftc           	   
   C  r  r.   r.   r  r.   r.   r/   r:   $  r  ))r  r  NNNrN   r  rN   )r  r  r   r   r   )r  r8   r  rN   )r  r  r   r   r   )r   r  r  rN   )r  r  rN   r   r   r   r8   r  rN   )r  r  r0  r   r   r  )r  r  r   r   r   )   r8   r  rN   )r  r  r   r   r   )r   r  r  rN   )r  r  rN   r   r   r   r8   r  rN   )r  r  r0  r   r   r  )r  rK  NNNr  )r  rK  r   r   N)rN   r  rN   )r  r  r   Nr   r  )r  rK  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#  rG  
dft_lengthr.   rH  r  r   r  r   r  r#  )r   r  r  rg  r   r  )rY   r   r-   r  r  r#  r  r  r  r  r  rB   r  rz   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 )NrG  r   rN   r8   r8   rN   rg  rH  r  r  r  r   )r  r#  rN   r   r8   rN   r<  r   )r`   r   r   r   r   r   r  r  r  r   ri   rj   r   r   r   r   r   r   rY   r   r#  rz   r.   r.   r/   test_dft_invalid_axis_opset17H%  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 )NrG  r   r  rg  rH  r#  r.   r  r  r  r  r  r   )r`   r   r   r   r   r   r  r  r  rX   r   ri   rj   r   r   r   r   r   r   r  r.   r.   r/   test_dft_invalid_axis_opset20m%  sB   	"z0TestShapeInference.test_dft_invalid_axis_opset20)real)rN   r8   r8   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.   rG  r   rg  rH  r  r  r  r  r  r   r`   r   rX   r   r   r   r   r  r  r  r   r   r   r   r   rY   r   r   rz   r.   r.   r/   test_dft_dynamic_axis_opset20%  s0   
z0TestShapeInference.test_dft_dynamic_axis_opset20c                 C  s   |  dtjdfgtdg dgtdtj|tj|tjd	 dtdg dgtdtjdtj
dgtjddtd	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.   rG  r   rg  rH  r  r  r  r  r  r   r  NNNrN   r  r   )r`   r   rX   r   r   r   r   r  r  r  rl  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.   rG  r   rg  rH  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 )NrG  r   r  rg  rH  r  r  r  r   r  r  r<  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 )NrG  r   r  rg  rH  r  r  r  r   r  )rN   r8   r   rN   r  r   r  r   r.   r.   r/   &test_dft_onesided_default_axis_opset202&  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 )NrG  signal)rN   r  r   )r   r   r   r   r   r   r   r   r   r   rN   rN   rN   rN   rN   r   r   r   r   r   rH  
frame_stepr.   r   windowr'  r  STFT)r  r  r  r  r  frame_length)r  r  r  r  )r`   r   r   r   r   rX   r   r   r   r.   r.   r/   test_stft_realsO&  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 )NrG  num_mel_binsr.   r-  rH  r  rp  sample_ratelower_edge_hertzg      $@upper_edge_hertzg      Y@MelWeightMatrixr  r  r  r  r   r  r[  r  )r`   r   r   r   rX   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 )NrG  r  r.   r-  rH  r  rp  r  r  r  r   r!  r"  r#  r  )output_datatyper$  )	r`   r   r   r   rX   r   r5  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  r:  r  r  r:  r   r  r   r  r   r.   r.   r/   test_center_crop_pad_hwc_cropY'     

	
z0TestShapeInference.test_center_crop_pad_hwc_cropc              	   C  r(  )Nr)  )r   r  r  r   r   r*  r   r   rN   r  r+  r  )r   r  r:  r  r   r  r   r.   r.   r/   test_center_crop_pad_chw_cropi'  r.  z0TestShapeInference.test_center_crop_pad_chw_cropc              	   C  r(  )Nr)  )r  r  r   r   r   r*  r   r   r   r  r  r:  r  )r  r:  r   r  r   r  r   r.   r.   r/    test_center_crop_pad_hwc_croppady'  r.  z3TestShapeInference.test_center_crop_pad_hwc_croppadc              	   C  r(  )Nr)  )r   r  r  r   r   r*  r   r   rN   r  r0  r  )r   r  r:  r  r   r  r   r.   r.   r/    test_center_crop_pad_chw_croppad'  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_shape'  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CategoryMapperrK   r   rG  123r+   cats_int64scats_stringsr   r   r~  r   )r   r8   r   )
r   r   r`   r   rX   r   r   r   r   r   )rY   cat	graph_int	graph_strr.   r.   r/   test_category_mapper'  s@   
z'TestShapeInference.test_category_mapperrG  r7  r8  Nr6  r1  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 )	Nr5  rK   r   r:  r   r   r~  r   )r   r   r`   r   rX   r   ri   rj   r   ro   r   r   )rY   r;  r<  r=  rz   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TreeEnsembleRegressorrK   r   r8   )r+   	n_targetsr   r   r   r8   r   r~  r   )
r   r   r`   r   r5  r   r   r   r   r   rY   treerz   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 )Nr8   r
  TreeEnsemblerK   r   r   nodes_splitsnodes_modesmembership_values)r!  r  r  r  r  rd  rN  leaf_weightsr   )r+   rC  nodes_featureidsrJ  rK  nodes_truenodeidsnodes_falsenodeidsnodes_trueleafsnodes_falseleafsrL  leaf_targetidsrM  
tree_roots
Batch SizeFeatures)rV  r8   r~  r   )r   r   r   r{   r&   r   r   r   nanr`   r   r   r   r   )rY   rh  interior_nodesleavesrG  rz   r.   r.   r/   test_tree_ensemble(  s^   
"

z%TestShapeInference.test_tree_ensembler   r  rM  )r
  r   r
  rJ  r'  r8   )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 )Nr8   r
  rI  rK   r   r   rK  )r+   rC  rN  rJ  rK  rO  rP  rQ  rR  rS  rM  rT  rU  r~  r   )r   r   r   r   r   r`   r5  r   ri   rj   r   ro   r   r   )rY   rO  rM  rJ  rY  rZ  rG  rz   r.   r.   r/   .test_tree_ensemble_fails_if_invalid_attributesO(  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TreeEnsembleClassifierrK   r   r   )r   r   rN   r   r   )classlabels_int64sr+   rD  )r   rE  r   r~  r   )r   r   r`   r   r5  r   r   rX   r   r   r   rF  r.   r.   r/   test_tree_ensemble_classifier(  s*   
z0TestShapeInference.test_tree_ensemble_classifierc              	   C  s~   t dddgdgtd}dD ]/\}}| dtjdfdtj|fg|gg }| j|tdtjdd	|fgttdttd
gd qd S )NArrayFeatureExtractorrK   r   r   r9   ))r   rN   )r.   r{  )r   r   r  r   r   r  r   	r   r   r`   r   rX   r   r   r   r   )rY   node
axes_shapeexpectedrz   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	BinarizerrK   r   r9   r  r   r  r   ra  )rY   rb  rz   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   rN   r   r   OneHotEncoderr  r  
ai.onnx.ml)r;  r+   rN   r   r   r   r   r  r   )
r`   r   rX   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   rh  ri  r  rj  )r;  r<  r+   r   r~  r   )r`   r   rX   r   r   ri   rj   r   ro   r   r   r   )rY   r;  r<  rz   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 )Nr^  rG  classlabels_strings)r   r   c)attrsr  )ri   r   rX   r   subTestzip_map_test_case)rY   paramsrp  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+   rj  r.   r   r  r   )r`   r   r   r   ri   r   make_map_type_protor  r   r  r  r   r   r   )rY   rp  r  rz   typr.   r.   r/   rr  *)  s6   	
z$TestShapeInference.zip_map_test_casec                 C  r  )Nr   rk  r   rQ   Compressr  r`   r   rX   r  r   r   r   r   r.   r.   r/   test_compress_without_axisH)  r  z-TestShapeInference.test_compress_without_axisc              	   C  r4  )
Nr   rk  r   rQ   rx  r  r$   r"  )rN   r   r   Nry  r   r.   r.   r/   test_compress_with_axisU)  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   r  	op_schemar.   r.   r/   (test_check_type_when_schema_has_empty_ioc)  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   r}  r~  r   rj   r   r   rl   rk   rY   modeltxtr  r.   r.   r/   #test_issue_layer_normalization_6187~)     	"z6TestShapeInference.test_issue_layer_normalization_6187c                 C  r  )Nz
        <
        ir_version: 9,
        opset_import: ["" : 11]
        >
        graph (float[7,6,1,5] in0, float in1, float[7,2,3,2,1] in2) => () {
        out0 = Conv <auto_pad = "NOTSET", group = 1> (in0, in1, in2)
        }
        Tr  r  r  r.   r.   r/   test_issue_conv_6180)  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   r}  r~  r   r   r^  rl   rj   rk   r  r.   r.   r/   test_issue_gemm_6185)  r  z'TestShapeInference.test_issue_gemm_6185c                 C  r  )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_6186rb  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  rb  invalid_node)r  r  r*   )ir  r   )r`   r   rX   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   r6   rc   r   r"   rq   )r   r   r   r   r"   rq   )r   r   r   r   r   r   r"   rq   )r   r6   r  r  r"   rq   )
r  r  r  r  r  r  r	  r  r"   rq   )r  )r  r  r  r  r  r  r	  r  r  r6   r"   rq   )
r   r   rH  r   r  r   r  r   r"   r   )r   r6   r-   r  r  r6   r  r  r#  r  r  r  r  r  r  r  r"   rq   )r   r6   r#  r  r"   rq   )r   r6   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.  r2  r6  r7  r<  r?  rB  rF  rJ  rb  rn  rs  rt  rw  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r$  r&  r,  r.  r/  r1  r3  r4  r6  r>  rB  rI  rL  rP  rU  rZ  r]  rb  rc  rf  rh  ru  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,  r1  r5  r9  r:  r=  rF  rJ  rN  rO  rQ  rR  rS  rT  rU  rZ  r\  r]  r^  rb  rh  rn  rq  rr  rw  rz  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r#  r%  r(  r/  r1  r@  rE  rF  rL  rN  rR  rS  r`  ra  rd  rh  rj  rk  rn  rt  rv  rw  rx  ry  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  ri   r   r   r   rx  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/  r0  r3  r6  r8  r=  r?  r@  rB  rC  rE  rH  rJ  rM  rQ  rS  rT  rW  r[  r]  ra  rc  rd  rf  rg  rh  ri  rk  rl  ro  rq  ru  rv  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  r  r  r  r  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  r<  r?  r@  rA  rB  rE  rH  rI  rL  rM  rT  rU  rV  rZ  r\  r^  rb  ri  rk  ro  rp  rq  rs  rv  ry  r  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/  r1  r2  r3  r4  r@  rA  rH  r5  r[  r   r\  r_  re  rg  rl  rm  rt  rr  rz  r{  r  r  r  r  r  r  r.   r.   r.   r/   r      s   
	)/8" 


'








 
,"





 


















:9;99,**D6)%####$#($&

&
 $D
		


 %#)'.
































		


'))??(+++
'G
'r$.  
@A$ 4"""""""".	r   c                   @  s   e Zd ZU dZded< dZded< dZded< d	Zded
< d#ddZd#ddZ	dd Z
dd Zd$ddZdd Zdd Zd#ddZd#ddZd#d d!Zd"S )%TestCustomSchemaShapeInferencer|  r6   custom_op_type
DummyGraphdummy_graph_op_typer   r  
op_versionr  	op_domainr"   rq   c                 C  s4   |  tj| j| j |  tj| j| j d S rQ   )r  ri   r   hasr  r  r  r  r.   r.   r/   setUp)  s   z$TestCustomSchemaShapeInference.setUpc                 C  s`   t tjj tj| j| j| j tj| j	| j| j W d    d S 1 s)w   Y  d S rQ   )

contextlibsuppressri   r   r   r  r  r  r  r  r  r.   r.   r/   tearDown)  s   "z'TestCustomSchemaShapeInference.tearDownc              
     st   t  j j jtj ddtj ddgtj jddt jjdgtj dtj j	j
gd}d fd
d}|| |S )Nr   floatr   r(  param_optionout_lenr  r  r  ctx%onnx.shape_inference.InferenceContextc                   s:  d	 fdd}  |  d | d}| d}||\}}||\}}  |tj   |tj   t|d   t|d   |d |d  |\}}	|\}
}| d}|j}  t||   t	|  D ]-}| 
|}||j_||jjj _|	| |jjj _|| |jjj _| || qmd S )
Nr   r   c                   s,     t| t | jjdd | jjjD fS )Nc                 S  s    g | ]}| d r|jndqS )r   N)r   r   )r2   r  r.   r.   r/   r:   *      zTestCustomSchemaShapeInference.get_custom_op_schema.<locals>.schema_shape_infer_func.<locals>.parse_tensor_input.<locals>.<listcomp>)
assertTruerT   r   r   r   r   r   )r   r  r.   r/   parse_tensor_input*  s   zpTestCustomSchemaShapeInference.get_custom_op_schema.<locals>.schema_shape_infer_func.<locals>.parse_tensor_inputrN   r   r   r  )r   r   )assertEqualget_num_inputsget_input_typer   r   r|   get_attributeintsget_num_outputsr&   get_output_typer   r   r   r   r(   r   set_output_type)r  r  in0in1in0_type	in0_shapein1_type	in1_shaper   Lar   Lbattrr  r  r(  r  r.   r/   schema_shape_infer_func*  s0   




zTTestCustomSchemaShapeInference.get_custom_op_schema.<locals>.schema_shape_infer_funcr  r  )r   r  r  r  r   FormalParameterFormalParameterOptionVariadic	AttributeAttrTypeINTS%set_type_and_shape_inference_functionrY   r!   r  r.   r  r/   get_custom_op_schema)  s"   

"z3TestCustomSchemaShapeInference.get_custom_op_schemac              
     sp   t  j j jtj jddt jjdgtj jddt jjdgtj dtj j	j
gd}d fd	d
}|| |S )Ninr  r  r(  rz   r  r  r  c                   s      d  d  d}| fddt  D  fddt  D }t|D ]
\}} || q5d S )NrN   rz   c                      g | ]}  |qS r.   )r  r  r  r.   r/   r:   F*      zjTestCustomSchemaShapeInference.get_dummy_graph_schema.<locals>.schema_shape_infer_func.<locals>.<listcomp>c                   r  r.   )get_input_datar  r  r.   r/   r:   G*  r  )	r  r  assertIsNotNoner  get_graph_attribute_inferencerdo_inferencingr&   r   r  )r  gctxr  idxr(  r  r  r/   r  A*  s   
zVTestCustomSchemaShapeInference.get_dummy_graph_schema.<locals>.schema_shape_infer_funcr  )r   r  r  r  r   r  r  r  r  r  GRAPHr  r  r.   r  r/   get_dummy_graph_schema(*  s"   


z5TestCustomSchemaShapeInference.get_dummy_graph_schemaFc           
      C  s   t dtj||f}t dtj||f}dd tt|D }t| jddgdd |D |d}	t|	gd||g|r;||dS g |dS )	Nr   r   c                 S      g | ]}t d | tjdqS r(  Nr   r   r   r  r.   r.   r/   r:   R*  r  zFTestCustomSchemaShapeInference.gen_custom_op_graph.<locals>.<listcomp>c                 S     g | ]}|j qS r.   rI   r2   r   r.   r.   r/   r:   W*  rM   )r  rS   rD   )r   r   r   r&   r|   r   r  r   )
rY   r   r  r  r  mark_outputr   r   outsrb  r.   r.   r/   gen_custom_op_graphO*  s   
z2TestCustomSchemaShapeInference.gen_custom_op_graphc           
      C  s   |  ||||d}tdtj||f}tdtj||f}dd tt|D }t| jddgdd |D |d}	t|	gd||gg |d	S )
NTr   r   c                 S  r  r  r  r  r.   r.   r/   r:   a*  r  zHTestCustomSchemaShapeInference.gen_dummy_graph_graph.<locals>.<listcomp>c                 S  r  r.   rI   r  r.   r.   r/   r:   f*  rM   r}  rS   r  )	r  r   r   r   r&   r|   r   r  r   )
rY   r   r  r  r  r  r   r   r  rb  r.   r.   r/   gen_dummy_graph_graph]*  s   
z4TestCustomSchemaShapeInference.gen_dummy_graph_graphc                   s&   |  | fddt|D  d S )Nc                   s.   g | ]\}}t d | tj  |fqS )r(  r  )r2   r  Lir  r  r   r.   r/   r:   m*  s    zCTestCustomSchemaShapeInference.shape_infer_once.<locals>.<listcomp>)r   r   )rY   rz   r   r  r  r  r.   r  r/   shape_infer_oncej*  s   z/TestCustomSchemaShapeInference.shape_infer_oncec                 C  s   d}d}d}ddg}|  ||||}| tjj | ||||| W d    n1 s-w   Y  |  }tj| | ||||| tj	|j
|j|j d S Nr   r  r  r   rN   )r  r   ri   r   r^  r  r  r   r  r  r*   r'   r+   )rY   r   r  r  r  rz   r!   r.   r.   r/   "test_custom_schema_shape_inferences*  s   zATestCustomSchemaShapeInference.test_custom_schema_shape_inferencec                 C  s   d}d}d}ddg}|  ||||}| tjj | ||||| W d    n1 s-w   Y  |  }|  }tj	| tj	| | ||||| tj
|j|j|j tj
|j|j|j d S r  )r  r   ri   r   r^  r  r  r  r   r  r  r*   r'   r+   )rY   r   r  r  r  rz   custom_op_schemadummy_graph_schemar.   r.   r/   'test_dummy_graph_schema_shape_inference*  s.   zFTestCustomSchemaShapeInference.test_dummy_graph_schema_shape_inferencec                   s   d}d}d}dg} ||||} }|  d	 fdd}|| tj| ||||| tj|j	|j
|j d S )
Nr   r  r  r   r  r  c                   s   |   | d | d | d t | d W d    n1 s4w   Y  | d | d t | d W d    n1 saw   Y  tj	j
 | d W d    n1 s}w   Y   | d t  | d W d    n1 sw   Y   | d t  | d W d    n1 sw   Y  | d t | d W d    n1 sw   Y   | d t | d W d    n	1 sw   Y  | d t | d W d    n	1 s/w   Y  |  d |  d d S )Nznot-exist-attrr   rN   r$   r   r  )assertIsNoner  r  	has_inputr  r   	TypeError
has_outputri   rj   r   r  r  RuntimeErrorget_input_sparse_datar  r  get_symbolic_inputr  r  r  r  r  raw_funcrY   r.   r/   r  *  sJ   zdTestCustomSchemaShapeInference.test_invalid_field_in_inference_func.<locals>.schema_shape_infer_funcr  )r  r  %get_type_and_shape_inference_functionr  ri   r   r  r  r  r*   r'   r+   )rY   r   r  r  r  rz   r!   r  r.   r  r/   $test_invalid_field_in_inference_func*  s   
zCTestCustomSchemaShapeInference.test_invalid_field_in_inference_funcNr  )F)r   r   r   r  __annotations__r  r  r  r  r  r  r  r  r  r  r  r  r  r.   r.   r.   r/   r  )  s   
 


B
'
	
!r  __main__rN   )	verbosity)r!   r   r"   r#   )r5   r6   r"   r7   )8
__future__r   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   r   onnx.parserr   collections.abcr    r0   get_all_schemasr4   r  r>   TestCaser?   r   r  r   mainr.   r.   r.   r/   <module>   s   <$	

                                                                                   <  