
    /j                      d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ ddlZddl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  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=m>Z>m?Z? ddl@mAZAmBZB ddlCmDZD ddlEmFZF ddlGmHZH ddlImJZJmKZK ddlLmMZMmNZN ddlOmMZP ddlQmRZR erddlSmTZT  eU edd                    ZV eU ed d!                    ZWd" ZXd# ZYd$ ZZd% Z[d& Z\d' Z]d7d1Z^ G d2 d3ej_                  Z`ead4k    r ejb        d56           dS dS )8zYou can run a specific test by using the following syntax.

::

    python onnx/test/reference_evaluator_test.py TestReferenceEvaluator.test_function_attribute_nested_graph
    )annotationsN)redirect_stdoutwraps)StringIO)getenv)dedent)TYPE_CHECKING)assert_allclose)AttributeProtoFunctionProto
ModelProtoTensorProtocheckerparser)get_roi_align_input_values)check_model)onnx_opset_version)make_function
make_graph
make_modelmake_model_gen_version	make_nodemake_operatorsetidmake_opsetidmake_sequence_type_protomake_tensormake_tensor_sequence_value_infomake_tensor_value_infomake_value_info)
from_array)ReferenceEvaluator)OpRunOpRunExpand)load_op)_get_indices_is_out)Cast_19Celu)Adam)_apply_causal)_vcelu1)_col2im_naive_implementation_2dcol2im_naive_implementation)Conv_conv_implementation)r/   )_conv_implementation_im2col)SequenceORT_MAX_IR_SUPPORTED_VERSION8$ORT_MAX_ONNX_OPSET_SUPPORTED_VERSION18c                <     t                      fd            }|S )Nc                 ~    t           j                            d          t          j        d           | i | d S )Nonnxruntimezonnxruntime not installed	importlibutil	find_specunittestSkipTestargskwargsfns     g/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/test/reference_evaluator_test.pywrapperz'skip_if_no_onnxruntime.<locals>.wrapperX   F    >##M22:#$?@@@
DF    r   rC   rE   s   ` rD   skip_if_no_onnxruntimerI   W   3    
2YY    Y
 NrG   c                <     t                      fd            }|S )Nc                 ~    t           j                            d          t          j        d           | i | d S )Ntorchztorch not installedr:   r@   s     rD   rE   z!skip_if_no_torch.<locals>.wrapperb   sF    >##G,,4#$9:::
DFrG   r   rH   s   ` rD   skip_if_no_torchrN   a   rJ   rG   c                <     t                      fd            }|S )Nc                 ~    t           j                            d          t          j        d           | i | d S )Ntorchvisionztorchvision not installedr:   r@   s     rD   rE   z'skip_if_no_torchvision.<locals>.wrapperl   rF   rG   r   rH   s   ` rD   skip_if_no_torchvisionrR   k   rJ   rG   c                    t          |t                    rt          | ||          S t          |          }t	          | ||          S N)
isinstanceintr   r   r    )name	elem_typeshapes_types       rD   make_sequence_value_infor[   u   sF    )S!! G.tYFFF%i00F4///rG   c                    dd l }t          }| j        D ]}|j        dv r	|j        } n| j        t          k    s|t          k    rd S |                    |                                 dg          S )Nr   ) zai.onnxCPUExecutionProvider)	providers)	r9   r5   opset_importdomainversion
ir_versionr3   InferenceSessionSerializeToString)
onnx_modelortonnx_domain_opsetopsets       rD   run_ort_inferencerj   |   s    <(  <?** %E +
 	 <<<CCCt$$&&3I2J     rG   c                   t          |t                    s t          dt          |          d          t	          | j                  t	          |          k    rt          d| j        d|d          t	                    dz  t          j        fdt                    D                       }t          | j        |z             }t                    D ]i}||         ||         dz
  ||         dz
  z  z   }t          ||         |z
  ||         d	         z   ||         d         z   ||         z  dz             }	|	||<   jt          |          }
t          j        |
| j        
          }t          j        |          }t          j        |j        d                    }t          |          D ]}t          ||j        d                    }t          |          }t          |          D ]}t          ||          }t          |          }||z  |ddd	f         z
  ||z  z   }t          |          }t!          || j                  r	d	|||z   <   f| t          |                   |||z   <   |S )zNaive implementation for `im2col`.

    Args:
        data: image (float)
        kernel_shape: kernel shape
        dilations: dilations
        pads: pads
        strides: strides

    Returns:
        result
    zUnexpected type z for kernel_shape.zShape mismatch z and .   c                6    g | ]}|         |z            fS  ro   ).0in_dimspadss     rD   
<listcomp>z/im2col_naive_implementation.<locals>.<listcomp>   s+    LLL$q'4F
#34LLLrG      r   dtypeN)rU   tuple	TypeErrortypelenrY   
ValueErrornparrayrangelistrV   zerosrw   prodr&   r'   )datakernel_shape	dilationsrs   stridesnew_padslist_output_shapedkdndoutput_shapereskernel_sizeres_sizerq   i_rest_resji_kernelt_kerneli_imgt_imgrr   s      `                  @rD   im2col_naive_implementationr      s    lE** US4+=+=SSSTTT
4:#l++++O4:OOlOOOPPPYY!^FxLLLLLeFmmLLLMMHTZ,6776]] " "!_Q! 3	!q8HII"R'(1+a.88A;q>IWUVZW
 
  "!*++L
(<tz
2
2
2C',''Kwsy6'*++H8__ ; ;Q	(F7( 344e{## 		; 		;A#A|44HXHGOhqqq!tn4x)7KKE%LLEudj)) ;()EH$%%(,U5\\(:EH$%%		; JrG   img
np.ndarrayr   tuple[int, ...]r   Sequence[int]rs   r   returnc           	        d }t          | j        d                   D ]w}t          | j        d                   D ]Z}t          | ||df         ||||          }|2| j        d d         |j        z   }	t          j        |	| j                  }||||df<   [xg |j        d t          |                    dR }	|                    |	          S )Nr   ru   .rm   rv   )r   rY   r   r}   emptyrw   r{   reshape)
r   r   r   rs   r   r   ncout	new_shapes
             rD   im2colr      s     C39Q<   ! !sy|$$ 	! 	!A-Aq#Iiw C {IbqbMCI5	hy	::: C1c	NN	! 7#)0s<000016266I;;y!!!rG   c                     e Zd ZdZedEd            ZedFd            Zd Zd Zd Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Zd! Zd" Zd# Zd$ Zd% Z d& Z!d' Z"d( Z#d) Z$d* Z%d+ Z&d, Z'd- Z(d. Z)d/ Z*d0 Z+d1 Z,d2 Z-d3 Z.d4 Z/d5 Z0e1d6             Z2e1d7             Z3d8 Z4d9 Z5d: Z6d; Z7d< Z8d= Z9d> Z:d? Z;e<d@             Z=dA Z>e<dB             Z?e<dC             Z@dD ZAdE ZBdF ZCdG ZDdH ZEdI ZFdJ ZGdK ZHdL ZIdM ZJdN ZKdO ZLdP ZMe1dQ             ZNdR ZOe<ePdS                         ZQdT ZRdU ZSdV ZTdW ZUdX ZVdY ZWdZ ZXd[ ZYedGd]            ZZe[j[        \                     e]j^        d^ e_j`        e_ja        e_ja        gd_d`gge_jb        a           e_j`        dbdcgdddegge_jc        a          gfdf e_j`        dgdhgdidjgge_jb        a           e_j`        dkdlgdmdlgge_jc        a          gfdn e_j`        dodpgdqdrgge_jb        a           e_j`        dsdkgdmdlgge_jc        a          gfdt e_j`        dudvgdwdxgge_jb        a           e_j`        dldkgdmdlgge_jc        a          gfdy e_j`        dzd{gd|d}gge_jb        a           e_j`        dmdlgdmdlgge_jc        a          gfd~ e_j`        ddgddgge_jb        a           e_j`        dmdsgdmdsgge_jc        a          gfd e_j`        ddgddgge_jb        a           e_j`        dmdlgdmdlgge_jc        a          gfd\ e_j`        ddgddgge_jb        a           e_j`        dsdkgdmdlgge_jc        a          gfd e_j`        e_ja        e_ja        gd_d`gge_jb        a           e_j`        dbdcgdmdlgge_jc        a          gfg	ddkg                    dHd            Zde[j[        \                    g d          dIdJd            Zed Zfd Zgd Zhd Zid Zjd Zkd Zl emjn         eojp        d          d          d             Zqd Zrd Zsd Ztd Zud Zvd Zwd Zxd Zyd Zzd Z{e[j[        \                    de e_j|        d          }                    dde          z   e_j|        dd          }                    ddb           e_j~        d          ddbg dg dg dgfde e_j|        d          }                    dde          z   e_j|        dd          }                    ddb           e_j        d          ddbg dg dg dgf e_j|        d          }                    dd          g dg dg dg e_j~        d          ddg dg dg dgf e_j|        dl          ddgddgddg df e_j        d           e_j        d           e_j~        d          dddf e_j        d¦           e_j        d           e_j~        d          dbdbdfg          dÄ             Ze[j[        \                     e_j|        d          }                    dde           e_j|        dd          }                    ddb           e_j~        d          ddbg dĢg dŢg dƢgf e_j|        d          }                    dde           e_j|        dd          }                    ddb           e_j        d          ddbg dǢg dȢg dɢgf e_j         e_j|        de          }                    dbdb          gdez             e_j         e_j`        ddgdbdgg           e_j`        dedgdldgg          g           e_j~        d˦          dbdbg d̢g d͢gg d΢g dϢggf e_j|        d          }                    dd          g dТg dТg dТg e_j~        d          ddg dѢg dҢg dӢgf e_j|        dl          dbdgddbgddg dԢf e_j        d           e_j        d           e_j~        d          dddf e_j        d¦           e_j        d           e_j~        d          dbdbdfg          dՄ             Zdք Zdׄ Zd؄ Zdل Zdڄ Zdۄ Zd܄ Zd݄ Zdބ Ze[j[        \                    g dߢ          d             Ze[j[        \                    g d          d             Zd Zd Zd Ze[j[        \                    ddgddgddgdfg ddgg ddfdg dg dg ddfg          d             Ze[j[        \                    ddgddg dg dgddgfg dddddgddgddggg dfg d ddddgddgddggg dfg dg dgddg dg dg dgg dg dg dggg dg dgfg dddg dg dg dgg d	fg dddg dg dg dgg d	fd
dgddg dg dgdldlgfg ddb e_j`        g           }                    d          g fg          d             Zd Ze[j[        \                    g ddg ddfg dg dgdg dg dgdfg ddg ddfg          d             Zd  Ze[j[        \                    ej        g d!g d"fej        g d#g d$fej        dgdgfej        g d%g d&fej        g d'g d(fej        dgdgfg          d)             Ze[j[        \                     e]j^        ej        ej        fej        ej        f                    d*             Ze[j[        \                     e]j^        ej        ej        fej        ej        f                    dKd.            Ze[j[        \                    ej        g d!g d/fej        g d#g d0fej        dgdgfej        g d%g d1fej        g d'g d2fej        dgdgfg          d3             Ze[j[        \                     e]j^        ej        ej        fej        ej        f                    d4             Ze[j[        \                     e]j^        ej        ej        fej        ej        f                    dKd5            Zd6 Zd7 Zd8 Ze[j[        \                    g d9          dLd=            Ze[j[        \                    g d>          d?             Zd@ ZdA ZdB ZdC ZdD ZdS (M  TestReferenceEvaluatora6  
        <
            ir_version: 7,
            opset_import: [ "": 10, "com.microsoft": 1]
        >
        agraph (float[N, M] B01, float[N, M] B11, float[N, M] B21) => (float[N, M] D0)
        {
            C0 = Add(B01, B11)
            C1 = Sub(B11, B21)
            D0 = Mul(C0, C1)
        }
        m_defstrr   r   c                V    t          j        |           }t          j        |           |S )zjParses a model from a string representation, including checking
        the model for correctness
        )r   parse_modelr   r   )r   ms     rD   _load_modelz"TestReferenceEvaluator._load_model   s*    
 u%%ArG   FN            ?c                   t          dt          j        d d g          }t          dt          j        d d g          }t          dt          j        d d g          }t          dt          j        d g          }t          dddgdg          }| rIt          dddgdg          }	|||d	k     rvr/rt          d
dgdg          }
nAt          d
dgdg          }
n+rt          d
dgdg          }
nt          d
dgdg          }
t	          ||	|
gd|||g|g          }nr0t          t          j        gt          j                  d          nd }r0t          t          j        gt          j                  d          nd }d|rdnd|rdndg}t          d
|dg          }
d ||fD             }t	          ||	|
gd|||g|g|          }fd}n/t          dddgdg          }	t	          ||	gd|||g|g          }d }|t          |          }n t          |t          d|          g          }	 t          |           n%# t          $ r}t          d|           |d }~ww xY w||fS )NXABYMatMulXAAddY_clip   Clip)minmax)r   )r   lrrv   mirW   mar]   c                    g | ]}||S ro   ro   )rp   _s     rD   rt   z=TestReferenceEvaluator._linear_regression.<locals>.<listcomp>  s    888Qa8q888rG   initializerc                <    t          j        ||z  |z             S rT   )r}   clip)xab	max_value	min_values      rD   fz4TestReferenceEvaluator._linear_regression.<locals>.f  s    wq1uqy)Y???rG   c                    ||z  |z   S rT   ro   )r   r   r   s      rD   <lambda>z;TestReferenceEvaluator._linear_regression.<locals>.<lambda>  s    A	 rG   opset_importszchecker fails for
)r   r   FLOATr   r   r!   r}   r~   float32r   r   r   	ExceptionAssertionError)r   ri   r   r   r   r   r   r   node1node2node3graphr   r   inputsr   r   rf   es     ``               rD   _linear_regressionz)TestReferenceEvaluator._linear_regression   s9   "3(9D$<HH"3(9D$<HH"3(9D$<HH"3(9D6BB(S#J77 '	*edC[8*==E URZZ 
A  T )"XJ9)! ! ! !*&8*se S S S A%fxj3%YOOOEE%fxj3%@@E"E5%#8$Aq	A3OO !Jrx2:FFFTRRRR  !Jrx2:FFFTRRRR 
 #B$6DDB8JK!&&3%88882r(888"E5)4!QQC[  @ @ @ @ @ @ @ edC[3%88Eu~taAYDDE))A=#E**JJ#E,r5:Q:Q9RSSSJ	L
#### 	L 	L 	L !Cz!C!CDD!K	L1}s   8I 
I*I%%I*c                    t          dt          j        d d g          }|                     t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nr   )r   r   r   assertRaisesry   r"   )selfr   s     rD   #test_reference_evaluator_exceptionsz:TestReferenceEvaluator.test_reference_evaluator_exceptions%  s    "3(9D$<HHy)) 	" 	"q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   AAAc                   t                               t           j                  }t          j        |           t          |          }|                     |j        g d           |                     |j        dg           |                     |j	        ddd           t          j        ddgddggt          j        	          }t          j        d
dgddggt          j        	          }t          j        ddgddggt          j        	          }|                    d |||d          d         }||z   ||z
  z  }t          ||           d S NB01B11B21D0
   ru   r]   zcom.microsoftr   rm      rv               )r   r   m2_defr   r   r"   assertEqualinput_namesoutput_namesopsetsr}   r~   r   runr   r   r   sessr   yzr   expecteds           rD   %test_reference_evaluator_no_attributez<TestReferenceEvaluator.test_reference_evaluator_no_attribute*  sE   "../E/LMMA!!$$)+@+@+@AAA*TF3332&B&BCCCHq!fq!f%RZ888Hq!fq!f%RZ888Hr2hR)<<<hhtQq;;<<Q?Ea!e$X&&&&&rG   c                   t                               t           j                  }t          j        |           t          |          }|                     |j        g d           |                     |j        dg           |                     |j	        ddd           t          j        ddgddggt          j        	          }t          j        d
dgddggt          j        	          }t          j        ddgddggt          j        	          }|                    d |||dd          }|                     |t                     ||z   ||z
  z  }t!          |d         |           d S )Nr   r   r   ru   r   r   rm   r   rv   r   r   r   r   r   r   r   r   T)intermediate)r   r   r   r   r   r"   r   r   r   r   r}   r~   r   r   assertIsInstancedictr   r   s           rD   2test_reference_evaluator_no_attribute_intermediatezITestReferenceEvaluator.test_reference_evaluator_no_attribute_intermediate8  s^   "../E/LMMA!!$$)+@+@+@AAA*TF3332&B&BCCCHq!fq!f%RZ888Hq!fq!f%RZ888Hr2hR)<<<hhtQq;;$hOOc4(((Ea!e$D	8,,,,,rG   c                   t                               t           j                  }t          j        |           t          |                                          }|                     |j        g d           |                     |j	        dg           |                     |j
        ddd           t          j        ddgddggt          j        	          }t          j        d
dgddggt          j        	          }t          j        ddgddggt          j        	          }|                    d |||d          d         }||z   ||z
  z  }t          ||           d S r   )r   r   r   r   r   r"   re   r   r   r   r   r}   r~   r   r   r   r   s           rD   +test_reference_evaluator_no_attribute_byteszBTestReferenceEvaluator.test_reference_evaluator_no_attribute_bytesG  sQ   "../E/LMMA!!"5"5"7"788)+@+@+@AAA*TF3332&B&BCCCHq!fq!f%RZ888Hq!fq!f%RZ888Hr2hR)<<<hhtQq;;<<Q?Ea!e$X&&&&&rG   c           	        t                               t           j                  }t          j        ddgddggt          j                  }t          j        ddgdd	ggt          j                  }t          j        d
dgddggt          j                  }|                     d          5  t          |d          }t                      }t          |          5  |
                    d |||d           d d d            n# 1 swxY w Y   |                                }d}|                     ||           d d d            n# 1 swxY w Y   |                     d          5  t          |d          }t                      }t          |          5  |
                    d |||d           d d d            n# 1 swxY w Y   |                                }t          d                              d          }|                     ||           d d d            n# 1 swxY w Y   |                     d          5  t          |d          }t                      }t          |          5  |
                    d |||d           d d d            n# 1 swxY w Y   |                                }t          d                              d          }|                     ||           d d d            n# 1 swxY w Y   |                     d          5  t          |d          }t                      }t          |          5  |
                    d |||d           d d d            n# 1 swxY w Y   |                                }t          d                              d          }|                     ||           d d d            d S # 1 swxY w Y   d S )Nr   ru   rm   r   rv   r   r   r   r   r   r   r   r   levelverboser   z:Add(B01, B11) -> C0
Sub(B11, B21) -> C1
Mul(C0, C1) -> D0
a  
                 +I B01: float32:(2, 2) in [0.0, 3.0]
                 +I B11: float32:(2, 2) in [4.0, 7.0]
                 +I B21: float32:(2, 2) in [-7.0, -4.0]
                Add(B01, B11) -> C0
                 + C0: float32:(2, 2) in [4.0, 10.0]
                Sub(B11, B21) -> C1
                 + C1: float32:(2, 2) in [8.0, 14.0]
                Mul(C0, C1) -> D0
                 + D0: float32:(2, 2) in [32.0, 140.0]
                
a  
                 +I B01: float32:(2, 2):[0.0, 1.0, 2.0, 3.0]
                 +I B11: float32:(2, 2):[4.0, 5.0, 6.0, 7.0]
                 +I B21: float32:(2, 2):[-4.0, -5.0, -6.0, -7.0]
                Add(B01, B11) -> C0
                 + C0: float32:(2, 2):[4.0, 6.0, 8.0, 10.0]
                Sub(B11, B21) -> C1
                 + C1: float32:(2, 2):[8.0, 10.0, 12.0, 14.0]
                Mul(C0, C1) -> D0
                 + D0: float32:(2, 2):[32.0, 60.0, 96.0, 140.0]
                   a  
                 +I B01: float32:(2, 2):[0.0, 1.0, 2.0, 3.0]
                 +I B11: float32:(2, 2):[4.0, 5.0, 6.0, 7.0]
                 +I B21: float32:(2, 2):[-4.0, -5.0, -6.0, -7.0]
                Add(B01, B11) -> C0
                -- begin Add.run(2 inputs)
                -- done Add.run -> 1 outputs
                 + C0: float32:(2, 2):[4.0, 6.0, 8.0, 10.0]
                Sub(B11, B21) -> C1
                -- begin Sub.run(2 inputs)
                -- done Sub.run -> 1 outputs
                 + C1: float32:(2, 2):[8.0, 10.0, 12.0, 14.0]
                Mul(C0, C1) -> D0
                -- begin Mul.run(2 inputs)
                -- done Mul.run -> 1 outputs
                 + D0: float32:(2, 2):[32.0, 60.0, 96.0, 140.0]
                )r   r   r   r}   r~   r   subTestr"   r   r   r   getvaluer   r	   lstrip)	r   r   r   r   r   r   stdoutr   logs	            rD   -test_reference_evaluator_no_attribute_verbosezDTestReferenceEvaluator.test_reference_evaluator_no_attribute_verboseU  s   "../E/LMMHq!fq!f%RZ888Hq!fq!f%RZ888Hr2hR)<<<\\\"" 	' 	'%a333DZZF (( ? ?q1==>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//##CQCS#&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' \\\"" 	' 	'%a333DZZF (( ? ?q1==>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//##C
  fTll  S#&&&'	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'* \\\"" 	' 	'%a333DZZF (( ? ?q1==>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//##C
  fTll  S#&&&'	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'* \\\## 	' 	'%a444DZZF (( ? ?q1==>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//##C $ fTll% & S#&&&3	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   -/ED7ED	E
D	/EE
E
'/H F=1H =G	H G	AH  H$'H$/K:0JK:J	K:J	AK::K>K>/O
M1%O1M5	5O8M5	9AOOOc                <   t          dt          j        d dg          }t          dt          j        d dg          }t          ddgdg          }t	          |gd|g|g          }t          |          }dD ]&}|                     |          5  t          ||          }t          j	        g t          j
        	                              d
d          }t                      }	t          |	          5  |                    d d|i          }
d d d            n# 1 swxY w Y   |}t          |
d
         |           |                     |
d
         j        d           |	                                }|                     d|           d d d            n# 1 swxY w Y   (d S )Ninputr   outputIdentitytest_empty_array)rm   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   rY   r  assertIn)r   input_tensoroutput_tensornoder   modelverbose_levelr   empty_inputr  resultr   r   s                rD   ,test_reference_evaluator_empty_array_verbosezCTestReferenceEvaluator.test_reference_evaluator_empty_array_verbose  s   -g{7H4QR)TT.x9JTSTIVVgY
;;D6#5~WW5!!* 	/ 	/MM22 / /)%GGG hr<<<DDQJJ!$V,, D D!XXdWk,BCCFD D D D D D D D D D D D D D D 'q	8444  &999oo''j#.../ / / / / / / / / / / / / / /	/ 	/s8   A#F0D	FDFDA&FF	F	c                   t                                           \  }}t          j        ddgddggt          j                  }t          j        ddgt          j                  }t          j        dgt          j                  } ||||          }t          |          }|                    d |||d          d         }t          ||           d S )Nr   ru   rm   r   rv   r   r   r   r   )r   r   r}   r~   r   r"   r   r   )	r   r   r   r   r   r   r   r   gots	            rD   test_reference_evaluator_lrz2TestReferenceEvaluator.test_reference_evaluator_lr  s    &99;;AHq!fq!f%RZ888HaV2:...HbT,,,1Q1::!"%%hht1115566q9X&&&&&rG   c                    |                      d          5  t                              d          \  }}t          j        ddgddggt          j        	          }t          j        ddgt          j        	          }t          j        d
gt          j        	          } ||||          }t          |          }|j        d         }|                     |j	        j
        d           |                    d |||d          d         }	t          |	|           d d d            n# 1 swxY w Y   |                      d          5  t                              dd           \  }}t          j        ddgddggt          j        	          }t          j        ddgt          j        	          }t          j        d
gt          j        	          } ||||          }t          |          }|j        d         }|                     |j	        j
        d           |                    d |||d          d         }	t          |	|           d d d            n# 1 swxY w Y   |                      d          5  t                              dd           \  }}t          j        ddgddggt          j        	          }t          j        ddgt          j        	          }t          j        d
gt          j        	          } ||||          }t          |          }|j        d         }|                     |j	        j
        d           |                    d |||d          d         }	t          |	|           d d d            d S # 1 swxY w Y   d S )Nmin+maxoptT)r   r   ru   rm   r   rv   r   r   Clip_11r!  r   )r   r   r   )r   r   )r  r   r   r}   r~   r   r"   	rt_nodes_r   	__class____name__r   r   
r   r   r   r   r   r   r   r   	last_noder"  s
             rD    test_reference_evaluator_lr_clipz7TestReferenceEvaluator.test_reference_evaluator_lr_clip  s   \\i\(( 
	+ 
	+*==4=HHEB1a&1a&)<<<A!Qrz222A"RZ000AqAqzzH%b))Dr*IY099EEE((4qqq!9!9::1=CC***
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ \\e\$$ 
	+ 
	+*==4SW=XXEB1a&1a&)<<<A!Qrz222A"RZ000AqAqzzH%b))Dr*IY099EEE((4qqq!9!9::1=CC***
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ \\e\$$ 
	+ 
	+*==4SW=XXEB1a&1a&)<<<A!Qrz222A"RZ000AqAqzzH%b))Dr*IY099EEE((4qqq!9!9::1=CC***
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+s8   DD$$D(+D(DIII4DNN
Nc                j   |                      d          5  t                              dd          \  }}t          j        ddgdd	ggt          j        
          }t          j        ddgt          j        
          }t          j        dgt          j        
          } ||||          }t          |          }|j        d         }|                     |j	        j
        d           |                     |j        d           |                     |j        d           |                    d |||d          d         }	t          |	|           d d d            n# 1 swxY w Y   |                      d          5  t                              ddd           \  }}t          j        ddgdd	ggt          j        
          }t          j        ddgt          j        
          }t          j        dgt          j        
          } ||||          }t          |          }|j        d         }|                     |j	        j
        d           |                     |j        d           |                     |j        d           |                    d |||d          d         }	t          |	|           d d d            n# 1 swxY w Y   |                      d          5  t                              ddd           \  }}t          j        ddgdd	ggt          j        
          }t          j        ddgt          j        
          }t          j        dgt          j        
          } ||||          }t          |          }|j        d         }|                     |j	        j
        d           |                     |j        d           |                     |j        d           |                    d |||d          d         }	t          |	|           d d d            d S # 1 swxY w Y   d S )Nr%  r&  Tr   )r   ri   r   ru   rm   r   rv   r   r   Clip_6r!  r   )r   ri   r   g   r   )r   ri   r   g   G)r  r   r   r}   r~   r   r"   r)  r   r*  r+  r   r   r   r   r,  s
             rD   "test_reference_evaluator_lr_clip_6z9TestReferenceEvaluator.test_reference_evaluator_lr_clip_6  s   \\i\(( 	+ 	+*==4r=RREB1a&1a&)<<<A!Qrz222A"RZ000AqAqzzH%b))Dr*IY098DDDY]B///Y]A...((4qqq!9!9::1=CC***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ \\e\$$ 	+ 	+*==t >  EB 1a&1a&)<<<A!Qrz222A"RZ000AqAqzzH%b))Dr*IY098DDDY]A...Y],BCCC((4qqq!9!9::1=CC***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+  \\e\$$ 	+ 	+*==t >  EB 1a&1a&)<<<A!Qrz222A"RZ000AqAqzzH%b))Dr*IY098DDDY]B///Y],ABBB((4qqq!9!9::1=CC***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s8   D8EE"E<D9KKK"D9P((P,/P,c                   t          j        d          }t          |          }t          j        g dt          j                                      d          }|                    d d|i          d         }|}t          ||           d S )Naf  
            <
              ir_version: 8,
              opset_import: [ "" : 14, "local" : 1],
              producer_name: "test",
              producer_version: "1.0",
              model_version: 1,
              doc_string: "Test preprocessing model"
            >
            agraph (uint8[H, W, C] x) => (uint8[H, W, C] x_processed)
            {
                x_processed = local.func(x)
            }

            <
              opset_import: [ "" : 14 ],
              domain: "local",
              doc_string: "function 1"
            >
            f1 (x) => (y) {
                y = Identity(x)
            }

            <
              opset_import: [ "" : 14 ],
              domain: "local",
              doc_string: "function 2"
            >
            f2 (x) => (y) {
                y = Identity(x)
            }

            <
              opset_import: [ "" : 14, "local" : 1 ],
              domain: "local",
              doc_string: "Preprocessing function."
            >
            func (x) => (y) {
                x1 = local.f1(x)
                y = local.f2(x1)
            }
        )r   ru   r   rv   ru   ru   r   r   r   )	r   r   r"   r}   r~   uint8r   r   r   )r   r   r   r   r  r   s         rD   test_nested_local_functionsz2TestReferenceEvaluator.test_nested_local_functions   s    )+
 +
Z "!$$HYYYbh///77	BB$a))!,)))))rG   c                ^   t          dt          j        d d g          }t          dt          j        d g          }t          ddgdgdgd          }t	          |gd|g|g          }t          |t          dd          g	          }t          |           t          j	        d
          
                    d                              t          j                  }|                    dd          }t          |          }|                    d d|i          d         }	t!          |	|           d S )Nr   r   	ReduceSumru   axeskeepdimsrsr]   r   r   <   r   r   r   axisr:  r   r   r   r   r   r   r   r   r   r}   aranger   astyper   sumr"   r   r   
r   r   r   r   r   rf   r   r   r   r"  s
             rD   test_reduce_sum_11z)TestReferenceEvaluator.test_reduce_sum_11T  s   "3(9D$<HH"3(9D6BB+use1#JJJE7D1#s33l2r6J6J5KLLL
JIbMM!!),,33BJ??55a!5,,!*--hhtc1X&&q)X&&&&&rG   c                d   t          dt          j        d d g          }t          dt          j        d g          }t          ddgdgdgd          }t	          |gd|g|g          }t          |t          dd          g	          }t          |           t          j	        d
          
                    d                              t          j                  }||z                      dd          }t          |          }|                    d d|i          d         }	t!          |	|           d S )Nr   r   ReduceSumSquareru   r8  r;  r]   r   r   r<  r=  r>  r   r@  rD  s
             rD   test_reduce_sum_square_11z0TestReferenceEvaluator.test_reduce_sum_square_11a  s   "3(9D$<HH"3(9D6BB+cUSEaPPPE7D1#s33l2r6J6J5KLLL
JIbMM!!),,33BJ??E;;A;22!*--hhtc1X&&q)X&&&&&rG   c                   t          dt          j        d d g          }t          dt          j        d d g          }t          dt          j        d g          }t	          dddgdgd          }t          |gd||g|g          }t          |t          dd	          g
          }t          |           t          j
        d                              d                              t          j                  }t          j        dgt          j                  }|                    dd          }	t#          |          }
|
                    d ||d          d         }t'          ||	           d S )Nr   r   r   r7  ru   r:  r;  r]      r   r<  r=  rv   r>  r   r   r   r   r   r   INT64r   r   r   r   r   r}   rA  r   rB  r   r~   int64rC  r"   r   r   r   r   r   r   r   r   rf   r   r   r   r   r"  s               rD   test_reduce_sum_13z)TestReferenceEvaluator.test_reduce_sum_13n  sG   "3(9D$<HH"3(9D$<HH"3(9D6BB+SzC51EEEE7D1a&1#66l2r6J6J5KLLL
JIbMM!!),,33BJ??HaS)))55a!5,,!*--hht11--..q1X&&&&&rG   c           	        t                      }d}t          d|          t          |d          g}t          dddgdg          }t                      }d|_        d|_        t          j        |_        |j        	                    |           t          |d	ddgdg|g|dg          }t          dt          j        d d g          }t          dt          j        d g          }t          dt          j        d g          }	t          t          d	ddgdg|d
          gd||g|	g          }
t!          |
||g          }t#          |          }t%          j        d                              d                              t$          j                  }t%          j        dgt$          j                  }|                    d ||d          d         }|                    dd          }t7          ||           d S )Ncustomr]   ru   r7  r   r?  r   r:  MyReduceSum)ra   r:  exampler   	functionsr   r   rm   r   rv   )r   r?  r   r>  )r   r   r   r   rW   ref_attr_nameINTrz   	attributeappendr   r   r   r   rN  r   r   r"   r}   rA  r   rB  r   r~   rO  r   rC  r   )r   ri   
new_domainr   r  attmy_reduce_sumr   r?  r   r   rf   r   r   r   r  r   s                    rD   test_reduce_sum_attributez0TestReferenceEvaluator.test_reduce_sum_attribute}  s   "$$
%b%00,z12M2MNsFmcU;;&!%c"""%&MEFL
 
 #3(9D$<HH%fk.?$HH"3(9D6BB!&ME%   IC
 
  =/
 
 

 "*--IaLL  ((//
;;HbT***$a 3 344Q755b15--)))))rG   c                   t          dt          j        d d g          }t          dt          j        d d g          }t          dt          j        d g          }t	          dddgdgd          }t          |gd||g|g          }t          |t          dd	          g
          }t          |           t          j
        d                              d                              t          j                  }t          j        dgt          j                  }||z                      dd          }	t#          |          }
|
                    d ||d          d         }t'          ||	           d S )Nr   r   r   rG  ru   rJ  r;  r]      r   r<  r=  rv   r>  rL  r   rM  rP  s               rD   test_reduce_sum_square_18z0TestReferenceEvaluator.test_reduce_sum_square_18  sL   "3(9D$<HH"3(9D$<HH"3(9D6BB+c3Z#KKKE7D1a&1#66l2r6J6J5KLLL
JIbMM!!),,33BJ??HaS)))E;;A;22!*--hht11--..q1X&&&&&rG   c                   t          dt          j        d d g          }t          dt          j        d d g          }t          dt          j        d g          }t	          dddgdgd          }t          |gd||g|g          }t          |t          dd	          g
          }t          |           t          j
        d                              d                              t          j                  }t          j        g t          j                  }|                    d          }	t#          |          }
|
                    d ||d          d         }t'          ||	           d S )Nr   r   r   r7  ru   rJ  r;  r]   rK  r   r<  r=  rv   rL  r   rM  rP  s               rD   test_reduce_sum_13_empty_axesz4TestReferenceEvaluator.test_reduce_sum_13_empty_axes  sC   "3(9D$<HH"3(9D$<HH"3(9D6BB+SzC51EEEE7D1a&1#66l2r6J6J5KLLL
JIbMM!!),,33BJ??HRrx(((55!5$$!*--hht11--..q1X&&&&&rG   c                   t          dt          j        d d g          }t          dt          j        d d g          }t          dt          j        d g          }t	          dddgdgd          }t          |gd||g|g          }t          |t          dd	          g
          }t          |           t          j
        d                              d                              t          j                  }t          j        g t          j                  }||z                      d          }	t#          |          }
|
                    d ||d          d         }t'          ||	           d S )Nr   r   r   rG  ru   rJ  r;  r]   rb  r   r<  r=  rv   rL  r   rM  rP  s               rD   $test_reduce_sum_square_18_empty_axesz;TestReferenceEvaluator.test_reduce_sum_square_18_empty_axes  sH   "3(9D$<HH"3(9D$<HH"3(9D6BB+c3Z#KKKE7D1a&1#66l2r6J6J5KLLL
JIbMM!!),,33BJ??HRrx(((E;;;**!*--hht11--..q1X&&&&&rG   c                .   t          dt          j        d d g          }t          dt          j        d g          }t          ddgdgdd          }t	          |gd|g|g          }t          |t          dd          g	          }t          |           t          j	        d
          
                    d                              t          j                  }t          |          }|                    d d|i          d         }t          ||           d S )Nr   r   r7  ru   r:  noop_with_empty_axesr;  r]   rK  r   r<  r=  r   r   r   r   r   r   r   r   r   r}   rA  r   rB  r   r"   r   r   	r   r   r   r   r   rf   r   r   r"  s	            rD   "test_reduce_sum_13_empty_axes_noopz9TestReferenceEvaluator.test_reduce_sum_13_empty_axes_noop  s    "3(9D$<HH"3(9D6BB+useaVWXXXE7D1#s33l2r6J6J5KLLL
JIbMM!!),,33BJ??!*--hhtc1X&&q)3rG   c                4   t          dt          j        d d g          }t          dt          j        d g          }t          ddgdgdd          }t	          |gd|g|g          }t          |t          dd          g	          }t          |           t          j	        d
          
                    d                              t          j                  }t          |          }|                    d d|i          d         }t          ||z  |           d S )Nr   r   rG  ru   ri  r;  r]   rb  r   r<  r=  r   rk  rl  s	            rD   )test_reduce_sum_square_18_empty_axes_noopz@TestReferenceEvaluator.test_reduce_sum_square_18_empty_axes_noop  s	   "3(9D$<HH"3(9D6BBuseaa
 
 
 E7D1#s33l2r6J6J5KLLL
JIbMM!!),,33BJ??!*--hhtc1X&&q)As#####rG   c                   t          dt          j        d d g          }t          dt          j        d g          }t          dt          j        d g          }t          dddgdg          }t	          |gd||g|g          }t          |t          dd          g          }t          |           t          j	        d	          
                    d
                              t          j                  }t          j        dgt          j                  }||k    }	t          |          }
|
                    d ||d          d         }t!          ||	           d S )Nr   r   ZGreatergr]   rK  r   r   rm   rm   rm   rv   r   r   r   r   r   r   r   r   r   r   r   r}   rA  r   rB  r   r~   r"   r   r   r   r   r   rq  r   r   rf   r   r   r   r   r"  s               rD   test_greaterz#TestReferenceEvaluator.test_greater  s4   "3(9D$<HH"3(9D6BB"3(9D6BB)c3Z#77E7C!Q!55l2r6J6J5KLLL
JIaLL  ((//
;;HaS
+++q5!*--hht11--..q1X&&&&&rG   c                   t          dddgdg          }t          j        d                              d                              t          j                  }t          j        dgt          j                  }||k    }t          |          }|                    d ||d	          d
         }t          ||           d S )Nrr  r   r   rq  r   rt  rm   rv   ru  r   )
r   r}   rA  r   rB  r   r~   r"   r   r   )r   r   r   r   r   r   r"  s          rD   test_node_protoz&TestReferenceEvaluator.test_node_proto  s    )c3Z#77IaLL  ((//
;;HaS
+++q5!%((hht11--..q1X&&&&&rG   c                   t          dt          j        d d g          }t          dt          j        d g          }t          dt          j        d g          }t          dddgdg          }t	          |gd||g|g          }t          |t          dd          g          }t          |           t          j	        d	          
                    d
                              t          j                  }t          j        dgt          j                  }||k    }	t          |          }
|
                    d ||d          d         }t!          ||	           d S )Nr   r   rq  GreaterOrEqualrs  r]   rK  r   r   rt  rm   rv   ru  r   rv  rw  s               rD   test_greater_or_equalz,TestReferenceEvaluator.test_greater_or_equal  s5   "3(9D$<HH"3(9D6BB"3(9D6BB*S#J>>E7C!Q!55l2r6J6J5KLLL
JIaLL  ((//
;;HaS
+++6!*--hht11--..q1X&&&&&rG   c                X   t          dt          j        d g          }t          dg dgt	          t          j        dgt
          j                                      }t          |gdg |g          }t          dt          j        d g          }t          dg dgt	          t          j        dgt
          j                                      }t          |gdg |g          }t	          t          j        dgt
          j                  d	
          }t          ddd	gdg          }t          ddgdg||          }t          dt          j        d d g          }	t          dt          j        d g          }
t          ||gd|	g|
g|g          }t          |          }t          |          }|                     t          |          d           t          j        dgt
          j                  }|                    d d|i          d         }t          t          j        dgt
          j                  |           t          j        dgt
          j                  }|                    d d|i          d         }t          t          j        dgt
          j                  |           d S )NCConstantru   rv   )value_floatsgthenr   gelsezeror   rr  r   GIfrq  )then_branchelse_branchrs  r   zReferenceEvaluator(X) -> Zr   )r   r   r   r   r!   r}   r~   r   r   r   r"   r   r   r   r   )r   r  bthen
bthen_bodybelse
belse_bodyr  greaternode_ifr   rq  r   	model_defr   r   r"  s                   rD   test_ifzTestReferenceEvaluator.test_if  s{   "3(9D6BBE#BHaS
$C$C$CDD	
 
 
  "qc::
"3(9D6BBE#BHaS
$C$C$CDD	
 
 
  "qc::
"(A3bj999GGGIV}se<<EE""
 
 
 #3(9D$<HH"3(9D6BBGW-sQC!4&QQQu%%	!),,T$@AAAHaS
+++hhtc1X&&q)!BJ777===HbT,,,hhtc1X&&q)!BJ777=====rG   c           
        t          dt          j        dg          }t          dt          j        dg          }t          j        g d                              t          j                  }t          j        g d                              t          j                  }t          dg dgt          |                    }t          dg dgt          |                    }t          |gdg |g          }t          |gd	g |g          }t          d
dgdg||          }	t                      }
d|
_        d|
_        |
j                            dg           |
j                            dg           |
j                            |	g           t#                      }|
j                            t'          d|          g           t          t          dddgdg          gdt          dt          j        g           gt          dt          j        dg          g          }t+          |dt'          d|          t'          dd          g          }|j                            |
g           t/          |          }|                    d dt          j        d          i          }t          j        g dt          j                  }t3          |d         |           d S )Nthen_outr   else_outru   rm   r   r   r   )r   r   r   rm   ru   r  r   outputsvalue	then_body	else_bodyr  f_condf_resr   r  r  r  rS  rC   r]   condr   )ra   r   r  r   )nodesrW   r   r  testru   )producer_namer   Trv   r   )r   r   r   r}   r~   rB  r   r   r!   r   r   ra   rW   r  extendr  r  r   r`   r   BOOLr   rW  r"   r   r   )r   r  r  r   r   then_const_nodeelse_const_noder  r  if_noder   ri   r   r   r   r  r   s                    rD   test_if_functionz'TestReferenceEvaluator.test_if_functionJ  s   )*k6G!MM)*k6G!MMH___%%,,RZ88H___%%,,RZ88#rJ<z!}}
 
 
 $rJ<z!}}
 
 
 0+rH:NN	0+rH:NN	:I!!
 
 
 OO	z"""		"""	wi   "$$	|B667888T(F8eWUUUV*6;3CRHHI+E;3DqcJJK	
 
 
  'E22L14M4MN
 
 

 	
A3!!$$$$ 8998OOO2:>>>q	8,,,,,rG   c                   t                      }d}t          d|          t          |d          g}t          dg dg          }t                      }d|_        d|_        t          j        |_        |j        	                    |           t          dd	d
gdg          }t          dddgdg          }t          |dd	d
gdg|||g|dg          }t          d	t          j        d d g          }	t          d
t          j        d d g          }
t          dt          j        d g          }t          t          dd	d
gdg|t          dt          j        dgdg                    t          ddgdg          gd|	|
g|g          }t!          |||g          }t#          |          }t%          j        d                              d                              t$          j                  }t%          j        ddgt$          j                  }|                    d ||d          d         }t%          j        ||z  dz             }t5          ||           d S )NrS  r]   ru   r  r   r  biasr   r   r   r   r   r   LinearRegressionY1former_Bq=
ףp?)ra   r  AbsrU  rV  r   rX  r   rv   rL  r   )r   r   r   r   rW   rY  TENSORrz   r[  r\  r   r   r   r   r   r   r   r"   r}   rA  r   rB  r   r~   r   absr   )r   ri   r]  r   cstr^  r   r   linear_regressionr   r   r   r   rf   r   r   r   r  r   s                      rD   test_function_attributez.TestReferenceEvaluator.test_function_attribute}  s_   "$$
%b%00,z12M2MN
B.."!(S!!!(S#J77%$se44)#JE%H
 
 #3(9D$<HH"3(9D$<HH"3(9D6BB&#JF%$Z1BQC$PP   %$#//	 FC
 
   ;L:M
 
 

 "*--IaLL  ((//
;;HaWBJ///$aa 0 011!46!a%$,'')))))rG   c                	   t                      }d}t          d|          t          |d          g}t          dg dg          }t                      }d|_        d|_        t          j        |_        |j        	                    |           t          dg dg          }t                      }d|_        d	|_        t          j        |_        |j        	                    |           t          dt          j        d g          }t          dt          j        d g          }t          |gd
g |g          }	t          |gdg |g          }
t          dg dgt          t          j        dgt          j                                      }t          ddgdg          }t          dddgdg          }t          ddgdg|	|
          }t          dddgdg          }t          dddgdg          }t%          |dddgdg||||||g|dd	g          }t          dt          j        d d g          }t          dt          j        d d g          }t          dt          j        d g          }t          t          dddgdg|t'          dt          j        dgd g          t'          d!t          j        dgd"g          #          t          d$dgdg          gd%||g|g          }t)          |||g&          }t+          |           t-          |          }|                     |j        d         j        j        d'           |                     |j        d         j        j        j        d(           |j        d         j        }d)}|j        D ]J}|j        j                            d          r)|j        s t=          d*t          |           d+          d,}K|st=          d-          t          j        d.                               d/          !                    t          j                  }t          j        dd0gt          j                  }|"                    d |dz   |d1          d         }t          j#        ||z  d z             }tI          ||           |"                    d |d2z
  |d1          d         }t          j#        ||z  d"z             }tI          ||           d S )3NrS  r]   ru   r  B1r  bias1B2bias2r  r  r  r   rv   r  	ReduceMinr   Xminrr  r  r  r   r  r   r   r   r   r   r  r  	former_B1r  	former_B2	  )ra   r  r  r  rU  rV  
OpFunctionr"   FzNested node z2 declares no linked attribute but a subgraph does.TzBNo node 'If' was found, has_linked_attribute could not be checked.r   rX  r   rL  r   )%r   r   r   r   rW   rY  r  rz   r[  r\  r   r   r   r   r!   r}   r~   r   r   r   r   r   r"   r   r)  r*  r+  impl_
startswithhas_linked_attributer   rA  r   rB  r   r  r   )r   ri   r]  r   cst1r^  cst2r  r  r  r  r  minir  r  r   r   r  r   r   r   r   rf   r   fctcheckedr  r   r   r  r   s                                  rD   $test_function_attribute_nested_graphz;TestReferenceEvaluator.test_function_attribute_nested_graph  s   "$$
%b%00,z12M2MNR$00#!(c"""R$00#!(c""")$0AD6JJ)$0AD6JJv{B
CC	v{B
CC	HRXqc<<<==	
 
 
 sefX669vv&6
CC:E!!
 
 
 (S#J77%$se44)#JE4%7g
 
 #3(9D$<HH"3(9D$<HH"3(9D6BB&#JF%%k;3DqcD6RR%k;3DqcC5QQ   %$#//
 FC
 
"  ;L:M
 
 

 	J!*--*4=|LLLN1#-68L	
 	
 	
 nQ%M 	 	D~&11$77 0 (0tDzz 0 0 0    	 T   IaLL  ((//
;;HaWBJ///$a!e! 4 455a86!a%$,'')))$a"f1 5 566q96!a%#+&&)))))rG   c                &   t                      }d}t          d|          t          |d          g}t          dg dg          }t                      }d|_        d|_        t          j        |_        |j        	                    |           t          dg dg          }t                      }d|_        d	|_        t          j        |_        |j        	                    |           t          dt          j        d g          }t          dt          j        d g          }t          |gd
g |g          }	t          |gdg |g          }
t          dg dgt          t          j        dgt          j                                      }t          dddgdg          }t          ddgdg|	|
          }t          dg dg          }t                      }d|_        d|_        t          j        |_        |j        	                    |           t          dt          j        d g          }t          |gd
g |g          }t          dt          j        d g          }t          |||gdg |g          }t          dg dgt          t          j        dgt          j                                      }t          ddgdg          }t          dddgdg          }t          ddgdg||          }t          ddd gd!g          }t          d"d!dgd#g          }t%          |d$dd gd#g||||||g|g d%          }t          dt          j        d d g          }t          d t          j        d d g          }t          d#t          j        d g          }t          t          d$dd gd&g|t'          d't          j        dgd(g          t'          d)t          j        dgd*g          t'          d+t          j        dgd,g          -          t          d.d&gd#g          gd/||g|g          }t)          |||g0          }t+          |           t-          |          }t          j        d1                              d2                              t          j                  }t          j        dd3gt          j                  }|                    d |dz   |d4          d         }t          j        ||z  d*z             }t9          ||           |                    d |d5z
  |d4          d         }t          j        ||z  d6z
            }t9          ||           |                    d |d7z   |d4          d         }t          j        ||z  d(z             }t9          ||           d S )8NrS  r]   ru   r  r  r  r  r  r  r  r  c100d   rv   r  rr  r  
f_cond_100r  B4r  B3bias3r  r   r  r   Lessf_cond_zeror   r   r   r   r   r   r  )r  r  r  r  r  r  r  r  	former_B3i)ra   r  r  r  r  rU  rV  r   rX  r   rL  r   ix  i  )r   r   r   r   rW   rY  r  rz   r[  r\  r   r   r   r   r!   r}   r~   r   r   r   r   r   r"   rA  r   rB  r   r  r   ) r   ri   r]  r   r  r^  r  r  r  
then_body1
else_body1r  r  r  cst3
then_body2
else_body2r  r  r   r   r  r   r   r   r   rf   r   r   r   r  r   s                                    rD   +test_function_attribute_nested_nested_graphzBTestReferenceEvaluator.test_function_attribute_nested_nested_graph"  s   "$$
%b%00,z12M2MN R$00#!(c"""R$00#!(c""")$0AD6JJ)$0AD6JJR(DD
R(DD
 HRXse2:>>>??	
 
 
 9vv&6GG >F""
 
 
 R$00#!(c""")$0AD6JJR(DD
)$0AD6JJvw 7b8*UU
 HRXqc<<<==	
 
 
 sefX666FF#3m_EE!?E""
 
 
 (S#J77%$se44)#JE4%7'''
 
 #3(9D$<HH"3(9D$<HH"3(9D6BB&#JF%%k;3DqcD6RR%k;3DqcC5QQ%k;3DqcD6RR   %$#// FC
 
"  ;L:M
 
 

 	J!*--IaLL  ((//
;;HaWBJ///$a!e! 4 455a86!a%#+&&)))$a"f1 5 566q96!a%#+&&)))$a$hQ 7 788;6!a%$,'')))))rG   c                    G d d          } G d dt                     } G d dt                     }t          dt          j        d d g          }t          dt          j        d g          }t	          ddgdgd	d
          }t          |gd|g|g          }t          |t          d
d          g          }t          j	        d          
                    d                              t          j                  dz   }	|                     t                    5  t          |           d d d            n# 1 swxY w Y   t	          ddgdgd	d
          }t          |gd|g|g          }t          |t          d
d          g          }|                     t                     5  t          ||g           d d d            n# 1 swxY w Y   t	          ddgdgd	d
          }t          |gd|g|g          }t          |t          d
d          g          }|                     t                    5  t          ||g           d d d            n# 1 swxY w Y   t	          ddgdgd	d
          }t          |gd|g|g          }t          |t          d
d          g          }t          |||g          }
|
                    d d|	i          d         }d|	d	z   z  }t%          ||           d S )Nc                      e Zd ZdZd Zd ZdS ):TestReferenceEvaluator.test_custom_node.<locals>._InvAlpharS  c                "    || _         || _        d S rT   )	onnx_node
run_params)r   r  r  s      rD   __init__zCTestReferenceEvaluator.test_custom_node.<locals>._InvAlpha.__init__  s    !*",rG   c                    d|| j         z   z  fS Nru   alphar   r   s     rD   _runz?TestReferenceEvaluator.test_custom_node.<locals>._InvAlpha._run      Q^,..rG   N)r+  
__module____qualname__	op_domainr  r  ro   rG   rD   	_InvAlphar    s7         I- - -/ / / / /rG   r  c                      e Zd Zd ZdS ):TestReferenceEvaluator.test_custom_node.<locals>.InvAlpha2c                    d|| j         z   z  fS r  r  r  s     rD   r  z?TestReferenceEvaluator.test_custom_node.<locals>.InvAlpha2._run  r  rG   N)r+  r  r  r  ro   rG   rD   	InvAlpha2r    s#        / / / / /rG   r  c                      e Zd ZdZddZdS )9TestReferenceEvaluator.test_custom_node.<locals>.InvAlpharS  Nc                &    |p| j         }d||z   z  fS r  r  r   r   r  s      rD   r  z>TestReferenceEvaluator.test_custom_node.<locals>.InvAlpha._run  s    +QY))rG   rT   r+  r  r  r  r  ro   rG   rD   InvAlphar    s-         I* * * * * *rG   r  r   r         ?rS  r  ra   r;  ru   r   r<  r=  new_opsr   )r#   r   r   r   r   r   r   r   r}   rA  r   rB  r   r   NotImplementedErrorr"   ry   r   r   )r   r  r  r  r   r   r   r   rf   r   r   r"  r   s                rD   test_custom_nodez'TestReferenceEvaluator.test_custom_node  s!   	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/	* 	* 	* 	* 	*u 	* 	* 	* #3(9D$<HH"3(9D6BB*secU#hOOOE7D1#s33l8Q6O6O5PQQQ
IbMM!!),,33BJ??!C233 	+ 	+z***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ +use3xPPPE7D1#s33l8Q6O6O5PQQQ
y)) 	@ 	@zI;????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ +use3xPPPE7D1#s33l8Q6O6O5PQQQ
233 	@ 	@zI;????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ *secU#hOOOE7D1#s33l8Q6O6O5PQQQ
!*x6JKKKhhtc1X&&q)C=X&&&&&s6   D55D9<D9%GGG4IIIc                |    G d dt                     }t          dt          j        d d g          }t          dt          j        d g          }t	          ddgdgdd          }t          |gd|g|g          }t          |t          dd	          g
          }t          j	        d          
                    d                              t          j                  d	z   }t          ||g          }|                     t                    5  |                    d d|i           d d d            d S # 1 swxY w Y   d S )Nc                      e Zd ZdZddZdS )DTestReferenceEvaluator.test_custom_no_output_tuple.<locals>.InvAlpharS  Nc                $    |p| j         }d||z   z  S r  r  r  s      rD   r  zITestReferenceEvaluator.test_custom_no_output_tuple.<locals>.InvAlpha._run  s    +AI&rG   rT   r  ro   rG   rD   r  r    s-         I' ' ' ' ' 'rG   r  r   r   r  rS  r  r;  ru   r   r<  r=  r  r#   r   r   r   r   r   r   r   r}   rA  r   rB  r   r"   r   ry   r   	r   r  r   r   r   r   rf   r   refs	            rD   test_custom_no_output_tuplez2TestReferenceEvaluator.test_custom_no_output_tuple  s   	' 	' 	' 	' 	'u 	' 	' 	' #3(9D$<HH"3(9D6BB*secU#hOOOE7D1#s33l8Q6O6O5PQQQ
IbMM!!),,33BJ??!C hZ@@@y)) 	$ 	$GGD3(###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$   D11D58D5c                |    G d dt                     }t          dt          j        d d g          }t          dt          j        d g          }t	          ddgdgdd          }t          |gd|g|g          }t          |t          dd	          g
          }t          j	        d          
                    d                              t          j                  d	z   }t          ||g          }|                     t                    5  |                    d d|i           d d d            d S # 1 swxY w Y   d S )Nc                      e Zd ZdZddZdS )ATestReferenceEvaluator.test_custom_empty_output.<locals>.InvAlpharS  Nc                
    ~~dS )Nro   ro   r  s      rD   r  zFTestReferenceEvaluator.test_custom_empty_output.<locals>.InvAlpha._run  s    urrG   rT   r  ro   rG   rD   r  r    s-         I     rG   r  r   r   r  rS  r  r;  ru   r   r<  r=  r  )r#   r   r   r   r   r   r   r   r}   rA  r   rB  r   r"   r   r|   r   r  s	            rD   test_custom_empty_outputz/TestReferenceEvaluator.test_custom_empty_output  s   	 	 	 	 	u 	 	 	 #3(9D$<HH"3(9D6BB*secU#hOOOE7D1#s33l8Q6O6O5PQQQ
IbMM!!),,33BJ??!C hZ@@@z** 	$ 	$GGD3(###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$r  c                |    G d dt                     }t          dt          j        d d g          }t          dt          j        d g          }t	          ddgdgdd          }t          |gd|g|g          }t          |t          dd	          g
          }t          j	        d          
                    d                              t          j                  d	z   }t          ||g          }|                     t                    5  |                    d d|i           d d d            d S # 1 swxY w Y   d S )Nc                      e Zd ZdZddZdS )@TestReferenceEvaluator.test_custom_tuple_tuple.<locals>.InvAlpharS  Nc                    |p| j         }t          t          d||z   z  g          g          }t          |t                    sJ t          |d         t                    sJ |S )Nru   r   )r  rx   rU   )r   r   r  r   s       rD   r  zETestReferenceEvaluator.test_custom_tuple_tuple.<locals>.InvAlpha._run  sf    +UAUO#455677!#u-----!#a&%00000
rG   rT   r  ro   rG   rD   r  r	    s-         I     rG   r  r   r   r  rS  r  r;  ru   r   r<  r=  r  r  r  s	            rD   test_custom_tuple_tuplez.TestReferenceEvaluator.test_custom_tuple_tuple  s   	 	 	 	 	u 	 	 	 #3(9D$<HH"3(9D6BB*secU#hOOOE7D1#s33l8Q6O6O5PQQQ
IbMM!!),,33BJ??!C hZ@@@y)) 	$ 	$GGD3(###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$r  c                  	  G d d          	 G 	fddt                     }t          dt          j        d d g          }t          dt          j        d g          }t	          ddgdgdd	          }t          |gd
|g|g          }t          |t          dd          g          }t          j	        d          
                    d                              t          j                  dz   }t          ||g          }|                     t                    5  |                    d d|i           d d d            d S # 1 swxY w Y   d S )Nc                      e Zd ZdS )LTestReferenceEvaluator.test_custom_tuple_unexpected_type.<locals>.CustomTypeNr+  r  r  ro   rG   rD   
CustomTyper            DrG   r  c                       e Zd ZdZd fd	ZdS )JTestReferenceEvaluator.test_custom_tuple_unexpected_type.<locals>.InvAlpharS  Nc                    ~~             f}t          |t                    sJ t          |d                   sJ |S )Nr   )rU   rx   )r   r   r  r   r  s       rD   r  zOTestReferenceEvaluator.test_custom_tuple_unexpected_type.<locals>.InvAlpha._run  sJ    u!z||o!#u-----!#a&*55555
rG   rT   r  )r  s   rD   r  r    s8         I       rG   r  r   r   r  rS  r  r;  ru   r   r<  r=  r  r  )
r   r  r   r   r   r   rf   r   r  r  s
            @rD   !test_custom_tuple_unexpected_typez8TestReferenceEvaluator.test_custom_tuple_unexpected_type  s   	 	 	 	 	 	 	 		 	 	 	 	 	 	u 	 	 	 #3(9D$<HH"3(9D6BB*secU#hOOOE7D1#s33l8Q6O6O5PQQQ
IbMM!!),,33BJ??!C hZ@@@y)) 	$ 	$GGD3(###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   EEEc                v   t          dt          j        g           }t          dt          j        g           }t          dt          j        g           }t	          dt          j        d           }t	          dt          j        d           }t          j        g d                              t          j	                  }t          dg dgt          d	t          j        |j        |                                                    t                    
                    }t          dg dgt          dt          j        ddg
                    }t          dg dgt          dt          j        ddg
                    }	t          dg dgt          dt          j        ddg
                    }
t          dddgdg          }t          dddgdg          }t          dg ddg          }t          dddgdg          }t          ddgdg          }t          ||||	||
|||g	d |||g||g          }t          d!g d"d#g|$          }t          d%d#gd&gdd'          }t          j        d(                              t          j                  }g }t          j        d                              t          j                  }t%          t          d)t          d*t          j        |j                  t          d+t          j        |j                  t'          d,t          j        g           gt          d&t          j        d           g||g-          .          }t          j        g d/t          j	        0          }t)          |          }|||d"}|                    d |          }t-          |d         |           d S )1Ncond_incond_out
iter_countseq_inseq_outr  r  r   const_tensor_x)rW   	data_typedimsvalsr  oneconst_tensor_onero   ru   slice_startconst_tensor_zeroru   r   r9  const_tensor_axesr   endr   r  	Unsqueeze	slice_endSlice)r   r"  r)  	slice_outSequenceInsertr  	loop_bodyLoop)
trip_countr  	seq_emptyseq_res)r   r  bodyConcatFromSequencer   )r   r  r?  new_axisr   	loop_testr/  r  r0  )rW   r   r  r  )r   )r   r          @r   r6        @r   r6  r7        @r   r6  r7  r8        @rv   )r   r   r  rN  r   r   r}   r~   rB  r   r   r   rY   flattenfloatr   rO  bool_r   r[   r"   r   r   )r   r  r  r  r  r  r   x_const_nodeone_const_nodezero_const_node	axes_nodeadd_nodeend_unsqueeze_node
slice_nodeinsert_nodeidentity_noder-  r  node_concatr/  r0  r  r  r   oinfr   r"  s                              rD   	test_loopz TestReferenceEvaluator.test_loop#  s-   
 )K4DbII)*k6FKK+L+:KRPP
0;;LdSS1)[=NPTUUH___%%,,RZ88 E%%+WYY[[''..	  	

 

 

 #G'%+S	  	

 

 

 $"O(%+S	  	

 

 

 H(%+S	  	

 

 

	 UL%+@5'RRR&+
 
 
 ===}
 
 

  h%<yk
 
 
 "*i[:,WWW"
 &)w
 
	" 666K	
 
 
   ;G
 
 
 Xa[[''11
	x{{!!"(++ *$k&79I  +6;3CTZPP,[+:KRPP 0{7H$OOP[)  
 
 
	 8WWW*
 
 
 "),, *DyQQhhtV$$A)))))rG   c                   t          dt          j        d g          }t          dt          j        d g          }t          ddgdgd          }t	          |gd|g|g          }t          |          }t          |           t          |          }|                    d dt          j
        dt          j                  d	z   i          d
         }|                     |j        d           |                     |j        t          j                   |                     |                                d           |                     |                                d           d S )Nr   r   	Bernoulli        seedrs  rm   r   rv   r  r   gh㈵grZ|
 ?r   r   r   r   r   r   r   r"   r   r}   r   r   r   rY   rw   assertGreaterr   
assertLessr   r   r   r   r   r   rf   r   r"  s           rD   test_onnxt_runtime_bernoulliz3TestReferenceEvaluator.test_onnxt_runtime_bernoulli  s.   "3(9D6BB"3(9D6BB+use#>>>E7C!qc22&&
J!*--hhtc28F"*#E#E#E#KLMMaPF+++BJ///37799e,,,		8,,,,,rG   c                F   t          dt          j        d g          }t          dg dgdddg          }t	          |gdg |g          }t          |          }t          |           t          |          }|                    d i           d         }| 	                    |j
        d	           | 	                    |j        t          j                   |                     |                                d           |                     |                                d
           d S )Nr   RandomUniformrK  rm   r   rM  rY   rs  r   rN  ru   )r   r   r   r   r   r   r   r"   r   r   rY   rw   r}   r   rP  r   rQ  r   r   r   r   r   rf   r   r"  s          rD   !test_onnxt_runtime_random_uniformz8TestReferenceEvaluator.test_onnxt_runtime_random_uniform  s    "3(9D6BB/2u3q!fMMME7CaS11&&
J!*--hhtR  #F+++BJ///37799a(((		1%%%%%rG   c                   t          dt          j        d g          }t          dt          j        d g          }t          ddgdgd          }t	          |gd|g|g          }t          |          }t          |           t          |          }|                    d dt          j
        dt          j                  i          d	         }|                     |j        d           |                     |j        t          j                   |                     |                                d	           |                     |                                d
           d S )Nr   r   RandomUniformLikerK  rL  rs  rN  rv   r   ru   rO  rR  s           rD   &test_onnxt_runtime_random_uniform_likez=TestReferenceEvaluator.test_onnxt_runtime_random_uniform_like  s*   "3(9D6BB"3(9D6BB-use#FFFE7C!qc22&&
J!*--hhtc28F"*#E#E#EFGGJF+++BJ///37799a(((		1%%%%%rG   c                   t          dt          j        d g          }t          dg dgdddg          }t	          |gdg |g          }t          |          }t          |           t          |          }|                    d i           d         }| 	                    |j
        d	           | 	                    |j        t          j                   d S )
Nr   RandomNormalrK  rm   r   rV  rs  r   rN  )r   r   r   r   r   r   r   r"   r   r   rY   rw   r}   r   rW  s          rD    test_onnxt_runtime_random_normalz7TestReferenceEvaluator.test_onnxt_runtime_random_normal  s    "3(9D6BB."se#aVLLLE7CaS11&&
J!*--hhtR  #F+++BJ/////rG   c                   t          dt          j        d g          }t          dt          j        d g          }t          ddgdgd          }t	          |gd|g|g          }t          |          }t          |           t          |          }|                    d dt          j
        dt          j                  i          d	         }|                     |j        d           |                     |j        t          j                   d S )
Nr   r   RandomNormalLikerK  rL  rs  rN  rv   r   )r   r   r   r   r   r   r   r"   r   r}   r   r   r   rY   rw   rR  s           rD   %test_onnxt_runtime_random_normal_likez<TestReferenceEvaluator.test_onnxt_runtime_random_normal_like  s    "3(9D6BB"3(9D6BB,secUEEEE7C!qc22&&
J!*--hhtc28F"*#E#E#EFGGJF+++BJ/////rG   c                    t          j        d          }|                     |j        d           t	          j        ddgddggt          j                  }t          j        |d          }t          |d          }t          ||           d S )Nr  r  r   ru   r   rm   rv   )
r)   creater   r  r}   r~   r   evalr,   r   )r   instr   r   r   s        rD   test_eval_celuz%TestReferenceEvaluator.test_eval_celu  s    {%%%S)))Hq!fr1g&bj999Ias###1C(((8$$$$$rG   c                    t          j        ddgddggt           j                  }t          j        |t
          j                  }t          j        |t
          j                  }|}t          ||           d S )Nr   ru   r   rm   rv   to)	r}   r~   r   r(   rd  r   FLOAT8E4M3FNr   r   )r   r   r   dyr   s        rD   test_eval_castz%TestReferenceEvaluator.test_eval_cast  sn    Hq!fr1g&bj999L{7888\! 1222H%%%%%rG   c                z   t          dd          }|                     |j        d           |                    d          }|                     |j        d           t          j        ddgddggt
          j        	          }|                    |d          }t          |d          }t          ||           d S )
Nr]   r)   r  r  r   ru   r   rm   rv   )r%   r   r  rc  r  r}   r~   r   rd  r,   r   )r   celure  r   r   r   s         rD   test_eval_celu_load_opz-TestReferenceEvaluator.test_eval_celu_load_op  s    r6"",,,{{{%%S)))Hq!fr1g&bj999IIasI##1C(((8$$$$$rG   c                f    t          j        d          }|                     |j        d           d S )Nr  r  )r*   rc  r   r  )r   re  s     rD   test_create_adamz'TestReferenceEvaluator.test_create_adam  s2    {%%%S)))))rG   c           	     B   t          dt          j        g d          }t          dt          j        g d          }t          dt          j        g d          }t          dt          j        g d          }t          dg ddgg dd	d	gd
d
g          }t	          |gd|||g|g          }t          |t          dd          g          }t          |          }|d S t          |d          }	| 	                    |	j
        d         t                     t          |t          gd          }
| 	                    |
j
        d         t                     t          |d          }| 	                    |j
        d         t                     d\  }}t          |          D ]}t          |          D ]l}t          j        d	d	||ft          j                  }d|dd||f<   t          j        dt          j                  }t          j        d
t          j        d                              d          z  d          |ddd d d d f<   t          j        dggggt          j                  }|                    d |||d          d         }|	                    d |||d          d         }t-          ||           |
                    d |||d          d         }t-          ||           |                    d |||d          d         }t-          ||           nd S )Nr   NNNNr   r   Wr/   r   rt  r   ru   ru   ru   ru   ru   rm   )rs   r   r   rs  r]      r   F)	optimizedr   )r  rx  T)r   r   rv   r   ru   ru   r   r   	   r   r      )r   r   r   r   r   r   r   rj   r"   r   r)  r/   ConvOptimizedr   r}   r   r   minimumrA  r   r~   r   r   )r   r   r   r   rt  r  r   rf   sess1sess2sess3sess4sHsWrq   r   r   r"  got3got4s                       rD   	test_convz TestReferenceEvaluator.test_conv	  s.   "3(9;S;S;STT"3(9;S;S;STT"3(9;S;S;STT"3(9;S;S;STTOOE!fF
 
 
 D63Aq	A377+E,rSUBVBVAWXXX
!*--=F":???eoa0$777":RWXXXeoa0-@@@":>>>eoa0-@@@Br 	0 	0A2YY 0 0HaB^2:>>> #!Q1*H\<<< "
1	!0D0DW0M0M+Ms S S!Q111*HugYbj999 99T+C+CDDQGiiAAA&>&>??BX...yyQQQ'?'?@@Ch///yyQQQ'?'?@@Ch////0	0 	0rG   c                   t          dt          j        g d          }t          dt          j        g d          }t          dt          j        g d          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          d	t          j        d g          }t          d
t          j        d g          }	t	          dg ddg          }
t          |
gd||||||||	g|g          }t          |t          dd          g          }t          |          }|d S t          |          }d\  }}t          |          D ]}t          |          D ]}t          j        dd||ft          j                  }d|dd||f<   |                     d||          5  t          j        dt          j                  }d|ddd d d d f<   |t          j        dgt          j                  t          j        dgt          j                  |t          j        dgt          j                  t          j        dgt          j                  t          j        dgt          j                  t          j        dgt          j                  d}|                    d |          d         }|                    d |          d         }t%          ||           d d d            n# 1 swxY w Y   |                     d||          5  t          j        dt          j                  }t          j        dt          j        d                              d          z  d          |ddd d d d f<   |t          j        dgt          j                  t          j        dgt          j                  |t          j        dgt          j                  t          j        dgt          j                  t          j        dgt          j                  t          j        dgt          j                  d}|                    d |          d         }|                    d |          d         }t%          ||           d d d            n# 1 swxY w Y   |                     d||          5  t          j        dt          j                  }d|ddd d d d f<   |t          j        dgt          j                  t          j        d gt          j                  |t          j        d!gt          j                  t          j        d"gt          j                  t          j        d#gt          j                  t          j        d gt          j                  d}|                    d |          d         }|                    d |          d         }t%          ||           d d d            n# 1 swxY w Y   d S )$Nr   rs  wr   x_scalew_scaley_scalex_zero_pointw_zero_pointy_zero_pointQLinearConvr   r  r  r  r  r  r  r  rs  r]   rw  r   r   r   ru   rv   r   r   1x1)r  rq   r   rv  3x3ry  rm   rz  r{     칟>n?   gO Y@   {XZ?)r   r   UINT8r   r   r   r   r   rj   r"   r   r}   r   r4  r  r~   r   r   r   r~  rA  r   )r   r   r  r   r  r  r  r  r  r  r  r   rf   r  r  r  r  rq   r   feedsr   r"  s                         rD   test_qlinearconvz'TestReferenceEvaluator.test_qlinearconv4  sq   "3(9;S;S;STT"3(9;S;S;STT"3(9;S;S;STT(K4EvNN(K4EvNN(K4EvNN-nk>ORVQWXX-nk>ORVQWXX-nk>ORVQWXX	 	 	 E
 
 Fq'<,WC	
 
 ,E,rSUBVBVAWXXX
!*--=F":..Br 3	3 3	3A2YY 23 23HaB^28<<< #!Q1*\\EQ!\44 3 3RX>>>A$%AaAAAqqqjM#%8QCrz#B#B#B(*!BH(E(E(E#%8QCrz#B#B#B(*!BH(E(E(E#%8QCrz#B#B#B(*!bh(?(?	 	E  %yyu55a8H))D%003C#C2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3  \\EQ!\44 3 3RX>>>A$&JqBIaLL4H4H4Q4Q/QSV$W$WAaAAAqqqjM#%8QCrz#B#B#B(*!BH(E(E(E#%8QCrz#B#B#B(*!BH(E(E(E#%8QCrz#B#B#B(*!bh(?(?	 	E  %yyu55a8H))D%003C#C2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3  \\EQ!\44 3 3RX>>>A$%AaAAAqqqjM#%8]O2:#N#N#N(*#bh(G(G(G#%8-=,>bj#Q#Q#Q(*#bh(G(G(G#%8]O2:#N#N#N(*#(A(A	 	E  %yyu55a8H))D%003C#C2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3G233	3 3	3s9    D:L&&L*-L*	E5S

SS-D:X33X7:X7c                   t          dt          j        g d          }t          dt          j        g d          }t          dt          j        g d          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          d	t          j        d g          }t          d
t          j        d g          }	t	          dg ddg          }
t          |
gd||||||||	g|g          }t          |t          dd          g          }t          |          }| 	                    d          5  t          j        g dg dg dg dg dg dg dgt          j                                      d          }t          j        dgt          j                  }t          j        dgt          j                  }t          j        dgt          j                                      d          }t          j        dgt          j                  }t          j        d gt          j                  }t          j        d!gt          j                  }t          j        d"gt          j                  }	||||||||	d}g d#g d$g d%g d&g d'g d(g d)ggg}|                    d |          d         }t!          ||           d d d            n# 1 swxY w Y   | 	                    d*          5  t          j        g dg dg dg dg dg dg dgt          j                                      d          }t          j        d+gt          j                  }t          j        dgt          j                  }t          j        g d,d-t          j                  }d.|d/<   d0|d1<   t          j        d+d2gt          j                  }t          j        d-d-gt          j                  }t          j        d!gt          j                  }t          j        d"gt          j                  }	||||||||	d}g d3g d4g d5g d6g d7gg d8g d9g d:g d;g d<ggg}|                    d |          d         }t!          ||           d d d            n# 1 swxY w Y   | 	                    d=          5  t          j        dt          j                  }t          j        d+gt          j                  }t          j        dgt          j                  }t          j        g d,d-t          j                  }t          j        d+d2gd>d>ggt          j                  }t          j        d-d-gt          j                  }t          j        d!gt          j                  }t          j        d"gt          j                  }	||||||||	d}|                     t(          d?          5  |                    d |          d          d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | 	                    d@          5  t          j        dt          j                  }t          j        d+gt          j                  }t          j        dgt          j                  }t          j        g d,d-t          j                  }t          j        g dAt          j                  }t          j        d-d-gt          j                  }t          j        d!gt          j                  }t          j        d"gt          j                  }	||||||||	d}|                     t(          dB          5  |                    d |          d          d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )CNr   rs  r  r   r  r  r  r  r  r  r  r  rs  r]   rw  r   single_channel)r                 :   )r  ;      _      r   @   )8            r        )            r  r  r  )   '   |   M   P   f   +   )         S   )   (      )r     \      *         rv   ru   ru   r   r   r  r  r   rv  gO\?r  r  {   )r   Q   ]   r  4   W      )      rb     ~   r     )   rK  r  "   r     Y   )   r  E   r<  rb  r  rb  )C         r     r     )r  r              y   )r   e      r      k      multiple_output_channels      p?)rm   ru   r   r   r     )r   r   ru   rm   rm   )ru   r   ru   r         `?)r        r  r  )   r     r     )   r  r  r  r  )   r           )            r  )r  X   r   r  /   )Z   r   !   r      )r   rb  rK  r  r   )r  r  2   r  L   )0   r   o   J   c   fails_with_w_scale_2Dru   z(w_scale must be a scalar or a 1-D tensorfails_with_w_scale_wrong_length)r  r  ru   z+w_scale elements must match output channels)r   r   r  r   r   r   r   r   r"   r  r}   r~   r4  r   r   r   r   fullr   assertRaisesRegexr|   )r   r   r  r   r  r  r  r  r  r  r  r   rf   r   r  r   r"  s                    rD   test_qlinearconv_w_scale_vectorz6TestReferenceEvaluator.test_qlinearconv_w_scale_vector  s	   "3(9;S;S;STT"3(9;S;S;STT"3(9;S;S;STT(K4EvNN(K4EvNN(K4EvNN-nk>ORVQWXX-nk>ORVQWXX-nk>ORVQWXX	 	 	 E
 
 Fq'<,WC	
 
 ,E,rSUBVBVAWXXX
!*--\\*++ .	+ .	+555111555777333333555 h   gl##  hbjAAAG8SE:::L!BH---55lCCAhbjAAAG8SE:::LhbjAAAG8SE:::L " ," ," ,	 	E 655:::777444::::::777
H ((4''*CC***].	+ .	+ .	+ .	+ .	+ .	+ .	+ .	+ .	+ .	+ .	+ .	+ .	+ .	+ .	+` \\455 5	+ 5	+555111555777333333555 h   gl##  h
|2:>>>G8QCrx888Lc:::AAjMAjMh
K8
KKKG8S#Jbh???LhbjAAAG8SE:::L " ," ," ,	 	E 211111111111111 -,,***)))---,,,H& ((4''*CC***k5	+ 5	+ 5	+ 5	+ 5	+ 5	+ 5	+ 5	+ 5	+ 5	+ 5	+ 5	+ 5	+ 5	+ 5	+n \\122 	) 	)RX666Ah
|2:>>>G8QCrx888Lc:::Ah[ 9Aq6B"*UUUG8S#Jbh???LhbjAAAG8SE:::L " ," ," ,	 	E ''F  ) ) u%%a(() ) ) ) ) ) ) ) ) ) ) ) ) ) ))	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)2 \\;<< 	) 	)RX666Ah
|2:>>>G8QCrx888Lc:::Ah;;;2:NNNG8S#Jbh???LhbjAAAG8SE:::L " ," ," ,	 	E ''I  ) ) u%%a(() ) ) ) ) ) ) ) ) ) ) ) ) ) ))	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   4FLLL3FSSS7D6Y--Y
Y-Y	Y-Y	Y--Y14Y1D2` ?_(` (_,	,` /_,	0`  ``c                   t          dt          j        g d          }t          dt          j        g d          }t          dt          j        g d          }t          dt          j        g d          }t          dddgdg|||          }	t          ddgd	g          }
t          d
dd	gdg|||d          }t          ddgdg          }t          dddgdg          }t	          |	|
|||gd||g||g          }t          |t          dd          t          dd          g          }t	          |	gd||g|g          }t          |t          dd          g          }t          |          }	 t          |          }|d S n# t          $ r d }Y nw xY wd\  }}t          j        |          }t          |          D ]}t          |          D ]}t          j        dd||ft          j                  }d|dd||f<   t          j        ddg|R t          j                  }t          j        dt          j        |                              |d         df          z  d          |ddd d d d f<   |                    d ||d          }|Y|                    d ||d          d         }t)          |d                                         |                                           	 t)          |d                                         |d                                                    \# t,          $ r3}t-          d| d| d | d!| d"|d          d#|d                    |d }~ww xY wd S )$Nr   rs  r  Y2rt  r/   rs   r   r   ShaperY   Im2Colximexperimental)rs   r   r   ra   Flattenwflatr   rs  r]   rw  ru   r   )r   r   rv   r   r   rm   r   r|  )r   rt  zDiscrepancies: pads=z, dilations=z
, strides=z, kernel_shape=r
  
!=
)r   r   r   r   r   r   r   r   r"   rj   ImportErrorr}   r   r   r   r   r~  rA  r   r   r   ravelr   )r   r   rs   r   r   r   r  r  rt  r  
node_shapenode_im	node_flatnode_gemr   rf   
graph_convonnx_model_convr   	sess_convr  r  nkerrq   r   r"  ort_resr   s                               rD   common_test_im2colz)TestReferenceEvaluator.common_test_im2colL  s(   "3(9;S;S;STT#D+*;=U=U=UVV#D+*;=U=U=UVV"3(9;S;S;STTS#JT7i
 
 
 wy99
'NG!
 
 
 i#	::	X'7$@@:w	8<FH	
 
  ,r2"6"6^UV8W8W!X
 
 

  aVbT::
0|B';';&<
 
 
 "*--	)/::I  ! 	 	 	III	 Bw|$$r 	 	A2YY  HaB^2:>>> #!Q1*H)L))*   !#
400,q/21FGGG! !!Q111* hht11%5%566('mmD2B2BCCAFG#CFLLNNGMMOODDD#CFLLNNCFLLNNCCCC%   (4t 4 4 4 4V] 4 4(44 4 V4 4+.q64 4  	#	 	s+   0F FF*A L,,
M)6.M$$M)c                D    |                      dg dddgddg           d S )Nru   ru   ru   ru   ru   rm   ru   r  r!  r   s    rD   test_im2col_1x1z&TestReferenceEvaluator.test_im2col_1x1  >    1v!Q 	  	
 	
 	
 	
 	
rG   c                D    |                      dg dddgddg           d S )Nrt  r$  ru   r  r%  r&  s    rD   test_im2col_2x2z&TestReferenceEvaluator.test_im2col_2x2  r(  rG   c                D    |                      dg dddgddg           d S )Nr  r$  ru   r  r%  r&  s    rD   test_im2col_3x3z&TestReferenceEvaluator.test_im2col_3x3  r(  rG   c                D    |                      dg dddgddg           d S )Nr  )r   ru   rm   r   ru   r  r%  r&  s    rD   test_im2col_3x3_padsz+TestReferenceEvaluator.test_im2col_3x3_pads  r(  rG   c                D    |                      dg dddgddg           d S )Nr  )r   ru   ru   ru   ru   rm   r  r%  r&  s    rD   test_im2col_3x3_stridesz.TestReferenceEvaluator.test_im2col_3x3_strides  r(  rG   c                D    |                      dg dddgddg           d S )Nr   r   r$  ru   r  r%  r&  s    rD   test_im2col_5x5z&TestReferenceEvaluator.test_im2col_5x5  r(  rG   c           	        dd l }t          dt          j        g d          }t          dt          j        g d          }t          dt          j        d g          }t          dt          j        d g          }t          dg ddgg d	d
d
gd
d
g          }t          |gd|||g|g          }t          |t          dd          g          }t          |          }	t          j        g dg dg dg dg dgg                              t          j                  }t          j        ddg                              t          j                  }
t          j        d
dg                              t          j                  }|j                            t#          |
          |          }|	                    d |||
d          } ||                    |                                                    }t+          ||d                    d S )Nr   r   NNNr   Ir   Col2Imr   r6  r   r   r   r   r   ru   r  rs  r]   rw  r   )r         @      &@      0@      5@)r6        @      (@      1@      6@)r7         @      *@g      2@      7@)r8        "@      ,@      3@      8@)r9  rK        .@g      4@g      9@r   )output_sizer   r   r   r6  )rM   r   r   r   rN  r   r   r   r   r"   r}   r~   rB  r   rO  nnFoldrx   r   
from_numpynumpyr   )r   rM   r   r   ISBSr  r   rf   r   image_shapeblock_shapefoldr"  r  s                  rD   test_col2imz"TestReferenceEvaluator.test_col2im  s   "3(9;M;M;MNN"3(9;M;M;MNN#C):TFCC#C):TFCCOOEF!f
 
 
 D63BaS99l2r6J6J5KLLL
!*--H 100000000000000

 

 &

 	
 h1v&&--bh77h1v&&--bh77x}}{););}UUhht1;[IIJJe&&q))**0022A'''''rG   c           	     t   dd l }t          dt          j        g d          }t          dt          j        g d          }	t          dt          j        d g          }
t          dt          j        d g          }t          dg ddg|||	          }t          |gd
||
|g|	g          }t          |t          dd          g          }t          |          }|j
                            t          |          t          |          t          |          t          |          t          |                    }t          j        |          }t!          |          D ]}t!          |          D ]}t          j        d||ft          j                  }d|d||f<   t          j        |t          j                  }t          j        |t          j                  } ||                    |                                                    }|                    d |||d          }t1          ||d                    Όd S )Nr   r   r5  r   r6  r   r7  r8  r  rs  r]   rw  r   )rJ  r   dilationpaddingstrideru   rv   r   rK  )rM   r   r   r   rN  r   r   r   r   r"   rL  rM  rx   r   r}   r   r   r   r   r~   rO  rN  rO  r   r   )r   sizerR  rS  rs   r   r   rM   r   r   rP  rQ  r  r   rf   r   rT  r  rq   r   i_shapeb_shaper  r"  s                           rD   common_test_col2imz)TestReferenceEvaluator.common_test_col2im  s1    	"3(9;M;M;MNN"3(9;M;M;MNN#C):TFCC#C):TFCCOOE
 
 
 D63BaS99l2r6J6J5KLLL
!*--x}}k**k**9%%II>>  
 
 w{##t 		0 		0A4[[ 0 0Hat_BJ??? !Q'
(;bh???(;bh???e..q112288::hht17%I%IJJA////0		0 		0rG   c           	     H    |                      dddg dddgddg           d S )Nr   r   r   rm   r   r9  ru   r  r]  r&  s    rD   test_col2im_2x3z&TestReferenceEvaluator.test_col2im_2x3   C    \\\Aq6aQRV 	  	
 	
 	
 	
 	
rG   c           	     H    |                      dddg dddgddg           d S )N   r_  r`  rv  ru   r  ra  r&  s    rD   test_col2im_2x3_padsz+TestReferenceEvaluator.test_col2im_2x3_pads  rc  rG   c                   t          j        ddgt           j                  }d|d         d<   t          j        ddg          dt          j        ddg          t          j        g d	          t          j        ddg          f\  }}}}}t	          ||||||          }t          ||||||          }t          ||           d S )
Nr   re  rv   r   r   r   r`  ru   rv  )r}   r   r   r~   r-   r.   r   )	r   r   rR  r   r   rs   rY  r1r2s	            rD   test_col2im_2dz%TestReferenceEvaluator.test_col2im_2d  s    xBrz222Q
HaVHaVH\\\""HaV>
:\9dF -+|Yf
 
 )+|Yf
 
 	BrG   c                B   t          dt          j        g d          }t          dt          j        g d          }t          dt          j        dg          }t          dt          j        g d          }t          dg d	dgdd
d
gddgg dd
d
g          }t	          |gd|||g|g          }t          |t          dd          g          }t          j        d          	                    d          
                    t          j                  t          j        g dg dg dggg dg dg dggg dg dg dggg dg dg dgggt          j                  t          j        g d t          j                  d	}d!|d         d d <   |d         }|d         }|d         }t          j        d|j                  }t          |j        d!                   D ]}	t          d          D ]v}
||	|	d
z   |
|
d
z   f         }||
         }t#          |d"d
d
gg dd
d
g          }t          j        ||                                          }|||
         z   }|||	|
d d d d f<   wt)          |          }|                    d |          }t-          ||d!         d#$           d S )%Nr   )rm   r   r   r   rt  )r   ru   r   r   r   r   r   r/   ru  ru   r   rv  groupr   r   rs   r   rs  r]   rw  r   i   )g    ޚg   ]?g    ~n)g   `cKg   @A?g   ,?)g   $w?g   ʩ?g   @)g   ug    ?g   )g    ?g    ?g   )g   
?g   
g   @V?)g    ?g   Jg     )g   ¿g   i_g   ?)g    c?g   ?g   r)g    sg   g    N{)g   @ʲ?g   m?g    @?)g   X?g    Ug   `Ζrv   )g   @[¿g   &g   (g   `䠾r   r  h㈵>atol)r   r   r   r   r   r   r   r}   rA  r   rB  r   r~   r   rw   r   rY   r   matmulr:  r"   r   r   )r   r   rt  r   r   r  r   rf   r  r   rs  r   r  c2mulref1got1s                    rD   test_conv_im2col_group4z.TestReferenceEvaluator.test_conv_im2col_group4  s   "3(9<<<HH"3(9<<<HH"3(9A3??"3(9<<<HHOOE!fQF	
 	
 	
 D63Aq	A377l2r6J6J5KLLL
 =))11,??FFrzRR  
  
  *  
  
  *  
  
  *  
  
  uM\ j_P P Pb    j  g\
 \
z c
111 #J#J#JH\111qwqz"" 	$ 	$A1XX $ $a!a%iQU*+aDAv1v|||aVDDiAIIKK00AaDj #!Q111*$ "*--xxe$$47......rG   c                   t          dt          j        g d          }t          dt          j        g d          }t          dt          j        dg          }t          dt          j        g d          }t          d	g d
dgdddgddgg dddg          }t	          |gd|||g|g          }t          |t          dd          g          }t          j        d          	                    d          
                    t          j                  dz   t          j        dt          j                  t          j        dt          j                  d
}d|d         d<   t          |          }	|	                    d |          }
t          j        g dg dg dgg dg dg dgggt          j                  }t!          |
d         |           d S )Nr   ru   r   r   r   rt  rm   r   r   r   r   rm   r   rs  r/   ru  ru   r   rv  rl  rs  r]   rw  r   l   rv   rm   )r   r   r   ru   )rK  rK  rK  )r>  rE  r;  )rG  r=  rD  r   )r   r   r   r   r   r   r   r}   rA  r   rB  r   r   r"   r   r~   r   r   r   rt  r   r   r  r   rf   r  rt  ru  r   s               rD   test_conv_stridesz(TestReferenceEvaluator.test_conv_strides  s   "3(9<<<HH"3(9<<<HH"3(9A3??"3(9;S;S;STTOOE!fQF	
 	
 	
 D63Aq	A377l2r6J6J5KLLL
 =))11,??FFrzRRUVV,bj999$bj111
 

 "#c
:!*--xxe$$8 %__&6&6&68J8J8JK$__oooG *
 
 
 	Q*****rG   c           	        t          dt          j        g d          }t          dt          j        g d          }t          ddgdgddgg dddg          }t	          |gd	|g|g          }t          |t          d
d          g          }dt          j        d          d d d         	                    d          
                    t          j                  i}t          j        g dg dg dg dgggt          j                  }t          |          }|                    d |          }	t          |	d         |           d S )Nr   rs  r   MaxPoolr   rv  rm   r   rs   r   rs  r]   rw  r   1   r   r  )g      H@g     G@g     F@g     E@)g     D@g      D@g      C@g      B@)g      ;@g      :@rH  rA  )rC  r?        $@rB  rv   r   r   r   r   r   r   r   r   r}   rA  r   rB  r   r~   r"   r   r   
r   r   r   r  r   rf   r  r   rt  ru  s
             rD   test_max_pool_2d_1z)TestReferenceEvaluator.test_max_pool_2d_1  sq   "3(9;S;S;STT"3(9;S;S;STTEEQF
 
 
 D63aS11l2r6J6J5KLLL
bimmDDbD)11,??FFrzRRS8 100000000///		 *
 
 
 "*--xxe$$Q*****rG   c                b   t          dt          j        g d          }t          dt          j        g d          }t          ddgdgddgg dddg          }t	          |gd	|g|g          }t          |t          d
d          g          }dt          j        g dg dg dg dg dg dg dgggt          j	                  i}t          j        g dg dg dg dgggt          j	                  }t          |          }|                    d |          }	t          |	d         |           d S )Nr   rs  r   r  r   rv  rm   r  rs  r]   rw  r   )i  if  i  iB  i  i  r  )i  i  i  r   r  r  iF  )iB  B   i  ix  iT  i  i  )r  i  is  iL  i  iJ  i  )i  r  i  r  i'  i;  ih  )  i>  r  i  i  i  i  )i|  i  K   iA  r  i  i  rv   )g     X@g     @     @r  )g     8@g     x@g     @     P@)     `@g     @r  r  )r  g     @r  g      @r   )r   r   r   r   r   r   r   r}   r~   r   r"   r   r   r  s
             rD   test_max_pool_2d_2z)TestReferenceEvaluator.test_max_pool_2d_2  s   "3(9;S;S;STT"3(9;S;S;STTEEQF
 
 
 D63aS11l2r6J6J5KLLL
  @??===>>>???===>>>>>>
 j  
$ 8 544444444444		 *
 
 
 "*--xxe$$Q*****rG   c                    t          dt          j        d d g          }t          dt          j        d d g          }t          dt          j        d d g          }t          dt          j        d d g          }t	          dg ddgdd	          }t          |gd
|||g|g          }t          |t          dd          g          }t          j	        g dgt          j
                  t          j	        ddgg          t          j	        ddggt          j
                  d}t          |          }	|	                    d |          }
t          j	        g dgt          j
                  }t          |
d         |           d S )Nr   r6  Ur   ScatterElementsr   r6  r  ru   r   r?  	reductionrs  r]   rw  r   )r   r6  r7  r8  r9  rv   皙?g @)r   r  r7  r8  r9  r   r   r   r   rN  r   r   r   r   r}   r~   r   r"   r   r   r   r   Indr  r   r  r   rf   r  rt  ru  r   s               rD   test_scatter_elementsz,TestReferenceEvaluator.test_scatter_elements	  s|   "3(9D$<HH$S+*;dD\JJ"3(9D$<HH"3(9D$<HHOOE
 
 
 D63CaS99l2r6J6J5KLLL
4445RZHHHAq6(##C:,bj999
 
 "*--xxe$$86667rzJJJQ*****rG   c                   t          dt          j        d d g          }t          dt          j        d d g          }t          dt          j        d g          }t          dt          j        d d g          }t	          dg ddg          }t          |gd|||g|g          }t          |t          dd	          g
          }t          j	        ddggt          j
                  t          j	        ddgg          t          j	        dgt          j
                  d}t          |          }	|	                    d |          }
t          j	        ddggt          j
                  }t          |
d         |           d S )Nr   r6  r  r   	ScatterNDr  rs  r]   rw  r   r   r6  rv   r   r7  r  r  s               rD   test_scatterndz%TestReferenceEvaluator.test_scatternd9	  sc   "3(9D$<HH$S+*;dD\JJ"3(9D6BB"3(9D$<HHOOE
 

 D63CaS99l2r6J6J5KLLL
C:,bj999Aq6(##3%rz222
 
 "*--xxe$$8c3ZL
;;;Q*****rG   c                   t          dt          j        g d          }t          dt          j        g d          }t          dt          j        d g          }t          dt          j        g d          }t          dg ddgddgd	d	gd
d
gg dddg          }t	          |gd|||g|g          }t          |t          dd          g          }t          j        d          	                    d          
                    t          j                  t          j        d          	                    d          
                    t          j                  t          j        g dt          j                  d}t          |          }	|	                    d |          }
t          j        g dg dg dg dg dgggt          j                  }t          |
d
         |           |dxx         d
z  cc<   d|d         d<   t          |          }	|	                    d |          }
t          j        g dg dg dg dg dgggt          j                  }t          |
d
         |           d S )Nr   rs  rt  r   r   ConvTransposeru  ru   r   r   rv  )r   r   output_paddingrs   r   rs  r]   rw  r   r<  )ru   r   r   r      )r   ru   r   r   r9  rv   )i  i  i  iA  )id  i.  id/  i!  )i   i3  i4  i$  )il$  i8  i\:  i(  )i  i+  i,  i#  )r   r   r   r   )r   r  r   r   r  r|  s               rD   test_conv_transpose_2dz-TestReferenceEvaluator.test_conv_transpose_2dQ	  s   "3(9;S;S;STT"3(9;S;S;STT"3(9D6BB"3(9;S;S;STTOOE!fQq6F	
 	
 	
 D63Aq	A377l2r6J6J5KLLL
=))11,??FFrzRR=))11,??FFrzRR,,,bj999
 
 "*--xxe$$8 100222222333222
 *
 
 
 	Q***c


a


!"c
:!*--xxe$$8 %$$$$
 *
 
 
 	Q*****rG   c           
        t          dt          j        g d          }t          dt          j        g d          }t          dt          j        d g          }t          dt          j        g d          }t          dg ddgdd	d	g
          }t	          |gd|||g|g          }t          |t          dd          g          }t          j        d          	                    d          
                    t          j                  t          j        d          	                    d          
                    t          j                  t          j        g dt          j                  d}t          j        g dg dg dg dg dg dgg dg dg dg dg dg d gggt          j                  }	t          |          }
|
                    d |          }t          |d!         |	           d S )"Nr   rs  rt  r   r   r  ru  
SAME_UPPERrm   )auto_padr   rs  r]   rw  r   rz  ry  rb  )ru   rm   r   r   r9  rv   )r   r   r   ru   rm   rm   )r   r   r   r   r   r  )r   r   r  r   re     )rz  r  r  rw  #      )rb  r  r<  r  r  r  )rb  r   3   re  r      )r   r   rz  r      r  )r   r   r  rK  &      )r     T   r     R   )$   r  r  r  t   A   )r  rz  r  r  i$  r  )H   N   r  [      h   r   r  )r   r   rt  r   r   r  r   rf   r  r   rt  ru  s               rD   test_conv_transpose_2d_upperz3TestReferenceEvaluator.test_conv_transpose_2d_upper	  s-   "3(9;S;S;STT"3(9;S;S;STT"3(9D6BB"3(9;S;S;STTOOE!F
 
 
 D63Aq	A377l2r6J6J5KLLL
=))11,??FFrzRR=))11,??FFrzRR,,,bj999
 
 8 +**+++...///000000 .--...111111555333( *+
 
 
0 "*--xxe$$Q*****rG   c                   t          dt          j        g d          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        g d          }t	          dg ddg          }t          |gd	|||g|g          }t          |t          d
d          g          }t          j	        d          
                    d                              t          j                  t          j        dt          j                  t          j        dt          j                  d}|d         }t          |d                   }t          |d                   }|dz  dz   }	|d         j        d         |z
  |z  dz   }
t          j        d|
|	dgt          j                  }t%          |
          D ]j}||z  }||z  |z   }t          j                            |d||df                   }|d|	         }t          j        |j        |j        fd          |d|f<   kt/          |          }|                    d |          }t3          |d         |           d S )Nsignalr5  
frame_stepframe_lengthr   rs  STFT)r  r  r]   r  rs  r]      r   r  ru   r  ru   r  rv   rw  )r  r  r  rm   ru   r   r?  )r   r   r   rN  r   r   r   r   r}   rA  r   rB  r   r~   rO  rV   rY   r   r   fftstackrealimagr"   r   r   )r   r  r  r  r   r  r   rf   r  onesided_lengthnstftsr   rq   startstopcomplex_outc_outrt  ru  s                      rD   	test_stftz TestReferenceEvaluator.test_stft	  s`   '+2CEWEWEWXX+L+:KdVTT
-nk>ORVQWXX"3(9;S;S;STT888E
 

 D63\(JQCPPl2r6J6J5KLLL
inn,,[99@@LL(1BH555HRrx888
 
 x5011|,--
'1,1?(+l:zIQN8Q;2:NNNv 	H 	HA
NEz>L0D&**VAuTz1,<%=>>K/ 12EXuz5:&>QGGGHQTNN!*--xxe$$Q*****rG   c                   t          dt          j        g d          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        g d          }t	          dg d	dg          }t          |gd
||||g|g          }t          |t          dd          g          }t          j	        d          
                    d                              t          j                  t          j        dt          j                  ddt          j        dt          j        z  t          j	        dddt          j                  z  dz            z  z   t          j        dt          j                  d	}	|	d         }t#          |	d                   }|	d         }t#          |	d                   }|dz  dz   }
d|j        d         |j        d         z
  dz  z   }t          j        d||
dgt          j                  }t)          |          D ]u}||z  }||z  |z   }t          j                            |d||df         |z            d|
         }|d|
         }t          j        |j        |j        fd          |d|f<   vt3          |          }|                    d |	          }t7          |d         |           d S )Nr  r5  r  windowr  r   rs  r  )r  r  r  r  rs  r]   r  r   r  r  r  rv   r  rm   r   rw  ru   r  )r   r   r   rN  r   r   r   r   r}   rA  r   rB  r   r~   rO  cospirV   rY   r   r   r  r  r  r  r"   r   r   )r   r  r  r  r  r   r  r   rf   r  r  r  r   rq   r  r  r  r  rt  ru  s                       rD   test_stft_with_windowz,TestReferenceEvaluator.test_stft_with_window	  s   '+2CEWEWEWXX+L+:KdVTT
'+2CdVLL-nk>ORVQWXX"3(9;S;S;STT>>>E
 

 D63V\(RUVTWXXl2r6J6J5KLLL
inn,,[99@@LL(1BH555BF1ru9ryB'L'L'LLrQRRRSHRrx888
 
 x5011x|,--
'1,1fl1oQ7A==8Q;2:NNNv 	H 	HA
NEz>L0D&**VAuTz1,<%=%FGG/!K  / 12EXuz5:&>QGGGHQTNN!*--xxe$$Q*****rG   c                   t          dt          j        g d          }t          dt          j        d d g          }t          dt          j        g d          }t          dt          j        d g          }t	          dg ddgddd	d
d|	  	        }t          |gd|||g|g          }t          |t          dd          g          S )Nr   rs  roisr   r6  RoiAlignr   r  r6  r   rm   r   output_half_pixel)output_heightoutput_widthsampling_ratiospatial_scalecoordinate_transformation_modemoders  r]   r  r   )r   r   r   rN  r   r   r   r   )r   r  r   r  r   rP  r  r   s           rD   get_roi_align_modelz*TestReferenceEvaluator.get_roi_align_model
  s    "3(9;S;S;STT%fk.?$NN"3(9;S;S;STT#C):TFCCE+>

 

 

 D63D"s;;%eLR<P<P;QRRRRrG   c                8   |                      |          }t                      \  }}}|||d}t          |          }|d S |                    d |          }t	          |          }	|	                    d |          }
t          |
d         |d         d           d S )Nr  r   rn  ro  )r  r   rj   r   r"   r   )r   r  rf   r   batch_indicesr  r  r   r   r  r"  s              rD   common_test_roi_alignz,TestReferenceEvaluator.common_test_roi_align%
  s    --d33
!;!=!==$M:: ,,<F88D%(( ,,ggdE""A$777777rG   c                   |                      d          5  |                     d           d d d            n# 1 swxY w Y   |                      d          5  |                     d           d d d            d S # 1 swxY w Y   d S )Navgr  r   )r  r  r&  s    rD   test_roi_alignz%TestReferenceEvaluator.test_roi_align1
  s   \\u\%% 	. 	.&&u---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. \\u\%% 	. 	.&&u---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   9= =A==BBc                l   dd l }ddlm} |                     |          }t	          |          }t                      \  }}}|                    d |||d          }	 |ddd          }
 |
|                    |          |                    |          g          }t          |	d         |d	           d S )
Nr   )RoIAlignr  r2  r   rm   )r  r  rn  ro  )	rM   torchvision.opsr  r  r"   r   r   rN  r   )r   r  rM   r  rf   r   r   r  r  r"  r   r   s               rD   common_test_roi_align_torchz2TestReferenceEvaluator.common_test_roi_align_torch9
  s    ,,,,,,--d33
!*--!;!=!==$hht1dGGHHHV3qAAA1U%%a((5+;+;D+A+A*BCCAt444444rG   c                    |                      d          5  |                     d           d d d            d S # 1 swxY w Y   d S )Nr  r  )r  r  r&  s    rD   test_roi_align_torchz+TestReferenceEvaluator.test_roi_align_torchF
  s     \\u\%% 	4 	4,,U333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   :>>c           	        t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          ddgg dd	          }t	          |gd
|g||||g          }t          |t          dd          g          }dt          j        d          	                    t          j
                  i}	t          j        g dt          j
                  t          j        g dt          j
                  t          j        g dt          j
                  t          j        dgt          j
                  g}
t          |          }|                    d |	          }t          d          D ].}t          j                            ||         |
|                    /d S Nr   r  r  Y3Y4Splitr  r  r  r  r   )num_outputsrs  r]   rb  r   r   r   ru   rm   rv   r=  )r   r   r  rz  )r   r   r   r   r   r   r   r}   rA  rB  r   r~   r"   r   r   testingassert_equalr   r   r  r  r  r  r  r   rf   r  r   rt  ru  rq   s                 rD   
test_splitz!TestReferenceEvaluator.test_splitO
  s   "3(9D6BB#D+*;dVDD#D+*;dVDD#D+*;dVDD#D+*;dVDD3%)A)A)AqQQQD63b"b"-=>>l2r6J6J5KLLL
bimm**2:667 HYYYbj111HYYYbj111HYYYbj111HaS
+++	
 "*--xxe$$q 	: 	:AJ##DGXa[9999	: 	:rG   c           	        t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dddgg d          }t	          |gd	|g||||g          }t          |t          d
d          g          }t          j        d          	                    t          j
                  t          j        g dt          j                  d}	t          j        g dt          j
                  t          j        g dt          j
                  t          j        ddgt          j
                  t          j        ddgt          j
                  g}
t          |          }|                    d |	          }t          d          D ]}t!          ||         |
|                    d S )Nr   r  r  r  r  r  splitr  rs  r]   rb  r   r   )r   r   rm   rm   rv   )r   r  r  r=  r   r   r  rz  r   )r   r   r   r   r   r   r   r}   rA  rB  r   r~   rO  r"   r   r   r   r  s                 rD   test_split_2z#TestReferenceEvaluator.test_split_2g
  s   "3(9D6BB#D+*;dVDD#D+*;dVDD#D+*;dVDD#D+*;dVDD3.2J2J2JKKD63b"b"-=>>l2r6J6J5KLLL
2%%bj11Xlll"(;;;
 
 HYYYbj111HYYYbj111HaV2:...HaV2:...	
 "*--xxe$$q 	2 	2ADGXa[1111	2 	2rG   c           	        t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          ddgg dd	          }t	          |gd
|g||||g          }t          |t          dd          g          }dt          j        d          	                    t          j
                  i}	t          j        g dt          j
                  t          j        g dt          j
                  t          j        g dt          j
                  t          j        dgt          j
                  g}
t          |          }|                    d |	          }t          d          D ]}t          ||         |
|                    dt          j        d          	                    t          j
                  i}	t          j        g dt          j
                  t          j        g dt          j
                  t          j        g dt          j
                  t          j        g t          j
                  g}
t          |          }|                    d |	          }t          d          D ]}t          ||         |
|                    d S r  )r   r   r   r   r   r   r   r}   rA  rB  r   r~   r"   r   r   r   r  s                 rD   test_split_num_outputs_4z/TestReferenceEvaluator.test_split_num_outputs_4
  s   "3(9D6BB#D+*;dVDD#D+*;dVDD#D+*;dVDD#D+*;dVDD3%)A)A)AqQQQD63b"b"-=>>l2r6J6J5KLLL
 bimm**2:667HYYYbj111HYYYbj111HYYYbj111HaS
+++	
 "*--xxe$$q 	2 	2ADGXa[1111 bill))"*556HYYYbj111HYYYbj111HYYYbj111HRrz***	
 "*--xxe$$q 	2 	2ADGXa[1111	2 	2rG   c                   t          dt          j        d d g          }t          dt          j        d g          }t	          ddgdgd          }t          |gd|g|g          }t          |t          dd          g	          }dt          j	        d
          
                    d                              t          j                  i}t          |          }|                    d |          }t          j        g dt          j                  
                    d          }	|                     |d                                         |	                                           d S )Nr   r   ArgMinru   r  rs  r]   rb  r   r  r   r   )r   r   r   rv   r   ru   r   r   r   r   rN  r   r   r   r   r}   rA  r   rB  r   r"   r   r~   rO  r   tolist
r   r   r   r  r   rf   r  rt  ru  r   s
             rD   test_argminz"TestReferenceEvaluator.test_argmin
  .   "3(9D$<HH"3(9D6BBC53%a888D63aS11l2r6J6J5KLLL
bimm++F33::2:FFG!*--xxe$$8IIIRX666>>wGGa))8??+<+<=====rG   c                   t          dt          j        d d g          }t          dt          j        d g          }t	          ddgdgd          }t          |gd|g|g          }t          |t          dd          g	          }dt          j	        d
          
                    d                              t          j                  i}t          |          }|                    d |          }t          j        g dt          j                  
                    d          }	|                     |d                                         |	                                           d S )Nr   r   ArgMaxru   r  rs  r]   rb  r   r  r  r   r   r   rv   r  r   r  r  s
             rD   test_argmaxz"TestReferenceEvaluator.test_argmax
  r  rG   c                   t          dt          j        d d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t	          dg ddg          t	          d	ddgdg          g}t          |d
||||g|g          }t          |t          dd          g          }t          j	        dggt          j
                  t          j	        dgt          j
                  t          j	        dgt          j
                  t          j	        dgt          j
                  d}	t          |          }
|
                    d |	          }t          j	        dgt          j
                  }|                     |d                                         |                                           d S )Nr   startsendsr9  r   r*  )r   r	  r
  r9  TSqueezers  r]   rb  r   r   rv   ru   r   r   r   rN  r   r   r   r   r}   r~   rO  r"   r   r   r   )r   r   r	  r
  r9  r   r  r   rf   r  rt  ru  r   s                rD   test_slice_squeezez)TestReferenceEvaluator.test_slice_squeeze
  s   "3(9D$<HH'+2CdVLL%fk.?$HH%fk.?$HH"3(9D6BBg>>>FFi#v66
 5#64'>DDl2r6J6J5KLLL
A3%rx000hs"(333HaS111HaS111	
 
 "*--xxe$$8QCrx000a))8??+<+<=====rG   c                   t          dt          j        d d g          }t          dt          j        d g          }t	          ddgdgdgdgdg          t	          ddgdgdg	          g}t          |d
|g|g          }t          |t          dd          g          }dt          j	        dggt          j
                  i}t          |          }|                    d |          }t          j	        dgt          j
                  }	|                     |d                                         |	                                           d S )Nr   r   r*  r  r   ru   )r9  r	  r
  r  )r9  rs  r]   r   r   rv   r  )
r   r   r   r  r   rf   r  rt  ru  r   s
             rD   test_slice_squeeze_6z+TestReferenceEvaluator.test_slice_squeeze_6
  s6   "3(9D$<HH"3(9D6BBguse1#qcLLLi#QC888
 5#sQC00l2q6I6I5JKKK
bhuBH5556!*--xxe$$8QCrx000a))8??+<+<=====rG   c                B   t          dt          j        d d g          }t          dt          j        d d g          }t          ddgdg          }t	          |gd|g|g          }t          |t          dd          g          }t          |           t          |          }|j	        d         }| 
                    |j        j        d	           |                    d dt          j        d
t          j                  i          d         }| 
                    |j        d           | 
                    |d         d           t          |t          dd          g          }t          |           t          |          }|j	        d         }| 
                    |j        j        d           |                    d dt          j        d
t          j                  i          d         }| 
                    |j        d           | 
                    |d         d           d S )Nr   r   
ReduceMeanrs  r]   r  r   r   ReduceMean_1rN  rv   r#  r   r   ru   rb  ReduceMean_18)r   r   r   r   r   r   r   r   r"   r)  r   r*  r+  r   r}   onesr   rY   )	r   r   r   r   r   rf   r   clsr"  s	            rD   test_onnxrt_reduce_meanz.TestReferenceEvaluator.test_onnxrt_reduce_mean
  s   "3(9D$<HH"3(9D$<HH,u55E7C!qc22l2r6J6J5KLLL
J!*--nQ/@@@hhtc276#D#D#DEFFqIF+++TA&&&l2r6J6J5KLLL
J!*--nQ/AAAhhtc276#D#D#DEFFqIF+++TA&&&&&rG   rG  c                   g }t          dt          j        d dg          t          dt          j        d g          g}t          dt          j        d d g          t          dt          j        d g          g}| dk    r[|                    t	          t          j        dgt
          j                  d	
                     t          |dd	gdgdd          }nt          |dgdgddgd          }t          ddgdgd
          t          dddgdgd
          |t          ddgdgd
          g}t          |d|||          }g }g d}|                    t	          t          j        |t
          j
                                      d          d
                     |                    t	          t          j        dgt
          j                  d
                     t          dt          j        d dg          g}t          dt          j        d dg          t          dt          j        d dg          g}t          dddgd d!gd"|d#          t          d$d!gd%gd&ddg'          t          d(d%gd)gd*
          t          d+d)dgddgd,dd-          g}t          |d.|||          }t          |t          d/|           g0          S )1Nnext_inr   nextnext_outscan_outrb  ru   rv   axis_redr   cdistdf_17_C0cdistdf_17_reduced0cdistdf_17_ReduceSumSquarer   )rW   r:  )rW   r9  r:  r  cdistd_17_IdentitySubcdistdf_17_Subcdistdf_17_IdentityOnnxIdentity)Pg   @:?g   g   g    ?g   `?g   9?g   `Ƕٿg   Jg    Og   3?g   h	ܿg    sg   g   @`6?g   dg    Lg   ?g   @_ÿg   @Eg   g?g   lg   пg   q?g    v?g   C?g   3?g   `~?g   @Q?g   ˄g   ڞg   @׿g   `Kg    g    ?g   g    zӿg   @E?g   Xӿg   <?g   `ؿg    u(@g    ǿg    Eg    m?g   g    ?g   @?g   T?g   ?g   Tg   @Bʿg    M	?g    9?g   `Y@g    -?g   `Q?g   E?g   &7׿g    [?g   ]Lg    Xg    i?g   g   `ۜg   g   ?g   ;˿g   g   kZ?g   Z?g    &?g   `Ah?g    lg   @D?g    ?G?g    p?g   hg   @>?g   Wg   `1Dֿ)r  r   
Sc_Scancstrm   
To_TopKcstr  valuesindicesScanUU032UUUU033UUSc_Scan)rW   r2  num_scan_inputs	TransposeTr_transposed0Tr_Transpose)rW   permSqrtSq_Y0Sq_SqrtTopKTo_TopK)rW   largestsorteddummyr]   r   )r   r   r   r\  r!   r}   r~   rO  r   r   r   r   rN  r   r   )	ri   	reduce_opinitializersr   r  node_reducer  r   
list_values	            rD   _cdist_modelz#TestReferenceEvaluator._cdist_model
  sy     #9k.?$KK"6;+<tfEE
 #:{/@4,OO":{/@4&II

 B;;28QCrx888zJJJ   $ *-&'1  KK $ !&'1S  K j9+
|BVWWW	6*_,=DT   &'*	  
 5.&'<PP Q
 Q
 Q

d 	2:666>>wGG!  	
 	
 	
 	rx28444<HHH	
 	
 	
 )+2CdAYOOP"8[->q	JJ"9k.?$KK
 ,'I& !   !"#V   f/07))LLL,'9%  #
6 5'67LII %R0G0G/HIIIIrG   r  g]l,@g.s,&2@rv   rm   r  r   r   ReduceL1gQ@gK-J3@g%s}N@gZOc10@rb  r   rK  ReduceL2g&?gq#i?giE@g=@r   ReduceLogSumgd?gUU?g(?gQOIR?ReduceLogSumExpg?g?g9z%4~@g	Y;@	ReduceMaxgS?gsn`{?go@g@r  gύ]`?gJ?g%s}N @gZOc10@gNs	@ghi
@gXE!@gHg`y#@
ReduceProdr  ri   rV   c                   |\  }t          j        d                              d                              t           j                  }i }|                     |          }t          |          }|                    d d|i          }||d|f<   fd|j        d         j	        j        D             }	|	d         j
        }
t          |	d         j        fd|
i          }t          ||g          }|                    d d|i          }||d	|f<   d
}|                                D ]\  }}t          t          |          t          |          d          D ]\  }}|j        |j        k    r)t#          dd| d|j         d| d|j         d          t          j        ||z
                                            }|dk    r!t#          d| dd| d| d| d|           d S )Nr  )r   r   r  r  c                R    g | ]#}|j         j                                      !|$S ro   )r*  r+  r  )rp   r   r<  s     rD   rt   z9TestReferenceEvaluator.test_op_reduce.<locals>.<listcomp>#  sB     
 
 
{#..y99

 
 
rG   r   	op_schemar  ref_clconstantTstrictzShape mismatch for z, :z != rl   gư>zDiscrepancies (max=z) for r
  r  )r}   rA  r   rB  r   r@  r"   r   r)  r2  _schemarz   r*  itemszipreversedrY   r   r  r   )r   reduce_op_expectedri   r   r   resultsr  r   r"  clschemanew_clbaselinekvr   r   diffr<  s                     @rD   test_op_reducez%TestReferenceEvaluator.test_op_reduce  sK   @ 1	8IaLL  ))00<<!!%33!%((hhtgq\** #u
 
 
 
^A&+5
 
 

 Ai"Q%/!3k65JKK!%&:::hhtgq\**#&% MMOO 
	 
	DAqHX..DIII 	 	17ag%%(ciccXccccUVccYZY`ccc   va!e}}((**$;;(hdhh)hhhhWXhh\]hhefhh   	
	 
	rG   )rK  )r  )rb  	ref_opsetc                   t          dt          j        g d          }t          dt          j        g d          }t          ddgdg          g}t	          |d|g|g          }t
          j                            dddd                              t
          j	                  }t          |t          d|          g	          }t          |          }	|	                    d d|i          d
         }
t          |t          d|          g	          }t          |          }|                    d d|i          d
         }|                     |
j        |j                   t!          |
|           d S )Nr   rs  r   MeanVarianceNormalizationrs  r   ru   r]   r   r   )r   r   r   r   r   r}   randomrandrB  r   r   r   r"   r   r   rY   r   )r   ri   r^  r   r   r  r   r   rf   r  r"  ref_onnx_modelref_expectedr   s                 rD   test_mvnzTestReferenceEvaluator.test_mvn;  sY    #3(9;S;S;STT"3(9;S;S;STT1C53%@@
 5#sQC00INN1aA&&--bj99l2u6M6M5NOOO
 ,,ggdS!H%%a(#E,r9:U:U9VWWW).99##D3(33A6HN333X&&&&&rG   c                   d } |            }t          j        ddgddggt           j                  }t          j        ddggt           j                  }t          j        d	d
ggt           j                  }t          j        |||g          }t	          |          }|||d}|                    d |          }	t          ||	d                    d S )Nc                    g } g }g }g }t                      dd}g }t          dddgdgdd	          }|                    |           d
 |                                D             }t	          ddddgdg||          }|                    |           |                    t          dt          j        g                      |                    t          dt          j        g                      |                    t          dt          j        g                      |                    t          dt          j        g                      t          dddgdgdd	          }|                     |           t          dddgdgdd	          }|                     |           d |                                D             }	t          | d||          }
t          |
|	|          S )Nru   )r]   custom_domainConcatzx:0zx:1r__0r   r]   )r?  ra   c                <    g | ]\  }}t          ||dn|          S r  r   rp   ra   rb   s      rD   rt   zZTestReferenceEvaluator.test_concat_in_a_function.<locals>.create_model.<locals>.<listcomp>b  s>     ! ! !#FG V'/QQwGG! ! !rG   rh  concat_2I__0I__1I__2r__4r__3c                <    g | ]\  }}t          ||dn|          S r  rl  rm  s      rD   rt   zZTestReferenceEvaluator.test_concat_in_a_function.<locals>.create_model.<locals>.<listcomp>}  s>       #FG V'/QQwGG  rG   numpyxrV  )
r   r   r\  rP  r   r   r   DOUBLEr   r   )r  r   r  rW  r   	nodes_fctr  opset_imports_fctr  r   r   s              rD   create_modelzFTestReferenceEvaluator.test_concat_in_a_function.<locals>.create_modelW  s   EFGI,..CCFIXu~xaPRSSSDT"""! !'-||~~! ! !  ! C S!!!MM09KRPPQQQMM09KRPPQQQMM09KRPPQQQNN1&+:LbQQRRRVV,vhQ  D LLVV,vhQ  D LL '-||~~  M
 uh@@Ee=IVVVVrG   r   r   r  r   rv   ru   rm   r   )rq  ro  rp  r   )r}   r~   float64vstackr"   r   r   )
r   ry  rf   x1x2x3r   r  r  r"  s
             rD   test_concat_in_a_functionz0TestReferenceEvaluator.test_concat_in_a_functionV  s    -	W -	W -	W^ "\^^
XAwQ(
;;;X1vhbj111XBxj
333Ir2rl## ,,R44ggdE""3q6"""""rG   c           
     b   t          dt          j        d g          }t          dt          j        d g          }t	          t          t          ddgdgt          j                  gd|g|g                    }t          |          }t          j	        dddt          j
        g          }|                    d d|i          d	         }|                     |t          j	        dddt          j
        g                              t          j                  k                                               d S )
Nr   r   Castrh  rs  Clp?Q}>ʈÿrK  r   )r   r   r   STRINGr   r   r   r"   r}   r~   nanr   
assertTruerB  str_allr   r   r   r  r  r   r"  s          rD   test_cast_float_to_stringz0TestReferenceEvaluator.test_cast_float_to_string  s   "3(9D6BB"3(:TFCCfsecU{7IJJJ  	
 	
 !''x9c26:;;ggdS$K((+BHh	3?@@GGPPPUUWW	
 	
 	
 	
 	
rG   c                .   t          dt          j        d g          }t          dt          j        d g          }t          t	          t          ddgdgt          j                  t          ddgdgt          j                  gd|g|g                    }t          |          }t          j	        ddd	t          j
        g          }|                    d d|i          d
         }t          |t          j	        ddd	t          j
        g                     d S )Nr   r   r  rq  rh  rs  r  r  rK  r   )r   r   r   r   r   r   r  r"   r}   r~   r  r   r   r  s          rD   "test_cast_float_to_string_and_backz9TestReferenceEvaluator.test_cast_float_to_string_and_back  s   "3(9D6BB"3(9D6BBfsecU{7IJJJfsecU{7HIII  

 

 !''x9c26:;;ggdS$K((+RXxC&HIIJJJJJrG   c                   t          dt          j        d           }t          dt          j        d           }t          dt          j        d           }t          dddgdgd          g}t          t          |d||g|g                    }t          |          }t          j
        d                              d	                              t          j                  }t          j        dt          j        
          }|                    d ||d          }	t          j        ddgddgddgggt          j        
          t          j        ddgddgddgggt          j        
          t          j        ddgddgddgggt          j        
          gg}
|                     t%          |
d                   t%          |	d                              t'          |
d         |	d         d           D ]\  }}t)          ||           d S )!Nr   r   rq  SplitToSequencerm   r  rs  rb  ru   r   r   rv   ru  rK  r   r:  r>  r?  rC  r6  r7  rB  rE  rF  rI  r8  r9  r  r;  r<  r@  r   TrL  r   r   r   rN  	UNDEFINEDr   r   r   r"   r}   rA  r   rB  r   r~   rO  r   r   r{   rQ  r   r   r   r   rq  r  r  r  r   r*  r"  r   r   r   s                rD   test_split_to_sequencez-TestReferenceEvaluator.test_split_to_sequence  s   "3(94@@"3(94@@"3(=tDD,sCj3%aHHHI:eS1a&1#>>?? ''y}}$$Y//66rzBB(1BH---ggd$W5566 C:SzD$<@ATTTC:SzD$<@ATTTC:d|dD\BC2:VVV
 	Xa[))3s1v;;777SVD999 	" 	"DAqAq!!!!	" 	"rG   c                   t          dt          j        d           }t          dt          j        d           }t          dt          j        d           }t          dddgdgd          g}t          t          |d||g|g                    }t          |          }t          j
        d                              d	                              t          j                  }t          j        g d
t          j                  }|                    d ||d          }	t          j        ddgddgddgggt          j                  t          j        ddgddgddgggt          j                  t          j        ddgddgddgggt          j                  gg}
|                     t%          |
d                   t%          |	d                              t'          |
d         |	d         d !          D ]\  }}t)          ||           d S )"Nr   r   rq  r  rm   r  rs  rb  r  rm   rm   rm   rv   ru  rK  r   r:  r>  r?  rC  r6  r7  rB  rE  rF  rI  r8  r9  r  r;  r<  r@  r   TrL  r  r  s                rD   test_split_to_sequence_1dz0TestReferenceEvaluator.test_split_to_sequence_1d  s   "3(94@@"3(94@@"3(=tDD,sCj3%aHHHI:eS1a&1#>>?? ''y}}$$Y//66rzBB(999BH555ggd$W5566 C:SzD$<@ATTTC:SzD$<@ATTTC:d|dD\BC2:VVV
 	Xa[))3s1v;;777SVD999 	" 	"DAqAq!!!!	" 	"rG   c                  
 t          dt          j        d           }t          dt          j        d           }t	          ddgdgdd          g}t          t          |d|g|g                    }t          |          }t          j	        d          
                    d	                              t          j                  
|                    d d
i          }
fd
t          
j        d                   D             g}|                     t#          |d                   t#          |d                              t%          |d         |d         d          D ]\  }}	t'          ||	           d S )Nr   rq  r  rm   r   r>  rs  rb  r  c                .    g | ]}d d d d |f         S rT   ro   )rp   rq   r   s     rD   rt   zTTestReferenceEvaluator.test_split_to_sequence_nokeepdims_noinput.<locals>.<listcomp>  s+    AAAqT!!!QQQ']AAArG   TrL  )r   r   r   r  r   r   r   r"   r}   rA  r   rB  r   r   r   rY   r   r{   rQ  r   )r   r   rq  r  r  r  r"  r   r   r   r   s             @rD   )test_split_to_sequence_nokeepdims_noinputz@TestReferenceEvaluator.test_split_to_sequence_nokeepdims_noinput  sV   "3(94@@"3(=tDD,secUQOOOP:eS1#s;;<< ''y}}$$Y//66rzBBggdS$K((AAAAE$*Q-,@,@AAABXa[))3s1v;;777SVD999 	" 	"DAqAq!!!!	" 	"rG   c                   t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          t	          t          ddgdgt          j                  t          ddgd	gt          j                  t          d
g dgt          dt          j        dgg d                    t          d
g dgt          dt          j        dgg d                    t          ddgdgt          j                  t          dd	gdgt          j                  t          ddgdgt          j                  t          ddgdgt          j                  gd|g||||g                    }t          |          }t          j        g dt          j                  }t          j                            |t           j                                      t          j                  }	t          j                            |t           j                                      t          j                  }
|                    d d|i          }t+          |d         |	           t+          |d         |
           t+          |d         |	           t+          |d         |
           d S )Nr   F1F2F3F4r  f81rh  f82r  C1r   r   ru   rm   g?r  r  C2rs  rv   r   ru   rm   r   )r   r   r   r   r   r   rj  
FLOAT8E5M2r   r"   r}   r~   r   onnxnumpy_helpersaturate_cast	ml_dtypesfloat8_e4m3fnrB  float8_e5m2r   r   )r   r   r  r  r  r  r  r  r   	expected1	expected2r"  s               rD   test_cast_float8z'TestReferenceEvaluator.test_cast_float8  s   "3(9D6BB#D+*;dVDD#D+*;dVDD#D+*;dVDD#D+*;dVDDfseeW9QRRRfseeW9OPPP") +":QCAUAUAU 	   ") +"81#?S?S?S 	   fugv+:KLLLfugv+:KLLLftftf9JKKKftftf9JKKK-0 RR 7 
 
> !''x,,,BJ???%33))
 

&

 	 %33D):OPPWWJ
 
	 ggdS$K((A	***A	***A	***A	*****rG   z2.0z9assert_allclose does not support ml_dtypes in numpy < 2.0c                   t          dt          j        d g          }t          dt          j        d g          }t          t	          t          ddgdgt          j                  t          dddgdgd	          t          ddgdgt          j                  gd
|g|g                    }t          j        ddgt          j	                  }|
                    t          j                  }t          |          }|                    d d|i          }t          |d         |            G d dt                     }t          ||g          }|                    d d|i          }t          |d         |           d S )Nr   r   r  f8rh  CastLikef32r   )saturaters  g    cArv   c                      e Zd ZdZdS )>TestReferenceEvaluator.test_cast_like_float8.<locals>.CastLiker]   N)r+  r  r  r  ro   rG   rD   r  r  =  s        IIIrG   r  )r   r   r   r   r   r   FLOAT8E4M3FNUZr}   r~   r   rB  r  float8_e4m3fnuzr"   r   r   r$   )	r   r   r   r  r   r   r  r"  r  s	            rD   test_cast_like_float8z,TestReferenceEvaluator.test_cast_like_float8"  s   
 #3(9D6BB"3(9D6BBfsedV8RSSSj3+wKKKfugu9JKKK
 	 	
 
 xC
333;;y899 ''ggdS$K((A)))	 	 	 	 	{ 	 	 	 !
;;;ggdS$K((A)))))rG   c                   t          dt          j        d g          }t          dt          j        d g          }t          dt          j        d g          }t          t          t          ddgdgt          j                  t          ddgdgt          j                  gd|g||g                    }t          |          }t          j
        g dt          j                  }t          j                            |t          j                  }t          j                            |t          j                  }|                    d d|i          }	|                     |	d	                                         |                                           |                     |	d
                                         |                                           d S )Nr   r  r  r  rh  rs  r  rv   r   ru   )r   r   r   rj  r  r   r   r   r"   r}   r~   r   r  r  r  r  r  r  r   r   r   )
r   r   r  r  r  r  r   r  r  r"  s
             rD   test_cast_float8_outputz.TestReferenceEvaluator.test_cast_float8_outputD  s   "3(9D6BB#D+*BTFKK#D+*@4&IIfsedV8PQQQfsedV8NOOO R 

 

 !''x,,,BJ???%33D):QRR	%33D):OPP	ggdS$K((Q)*:*:*<*<===Q)*:*:*<*<=====rG   c                n   t          j        ddddddddd	d
dddt           j        t           j         t           j        gt           j                  }t
          j        t          j        dddddddddddddddt           j        gt           j                  t
          j        t          j        dddddddddddddddt           j        gt           j                  t
          j        t          j        dddddddddddddddt           j        gt           j                  t
          j	        t          j        ddddddddd ddddddt           j        gt           j                  i}d! }|
                                D ]\  }}|                     |"          5   ||          }t          |          }|                    d d#|i          d$         }t          ||           |                     |j        |j                   |                     |j        |j                   d d d            n# 1 swxY w Y   d S )%Ng	?i`  i  iP  i0  i  iig-C6?g{Gz?i       j@rv   g      ?g      v@g      z@g      t@g      p@g      pg      XrK  g      ?g      |@g      |g      n@g      ng      ?g      x@g      ?g      @g      g?c                F   t          dt          j        d g          }t          dt          j        d g          }t          ddgdg|           }t          ddgdgt          j                  }t	          ||gd|g|g          }t          |          }t          |           |S )Nr   r   r  r  rh  r   )r   r   r   r   r   r   r   )ri  r   r   r   r   r   rf   s          rD   model_cast_castzCTestReferenceEvaluator.test_float8_4_types.<locals>.model_cast_cast  s    &sK,=vFFA&sK,=vFFAfsecUr:::EfsecU{7HIIIEu~taS1#>>E#E**J
###rG   rh  r   r   )r}   r~   infr  r   r   rj  r  r  FLOAT8E5M2FNUZrP  r  r"   r   r   r   rY   rw   )	r   r   r   r  ri  expectrf   r  r   s	            rD   test_float8_4_typesz*TestReferenceEvaluator.test_float8_4_types[  s   H!$ *'
 
 
, $bhF!$ j'' ' '* &F!$ j') ) )* "BH&F!$ j'% % %* &!     !!!!    !F!$ j') ) )AU
n	 	 	 #..** 	8 	8JB$$ 8 8,_R00
(44GGD3(++A.6***  &,777  &,7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8s   B	H))H-	0H-	c           
        t          dt          j        d g          }t          dt          j        d g          }t	          t          t          ddgdgt          j                  gd|g|g                    }t          |          }t          j	        g dt          j
                  }|                    t          j                  }|                    d d|i          }t          j                            |d         |           d S )	Nr   r   r  rh  rs  r   ru   rm   r  r  rv   r   )r   r   r   BFLOAT16r   r   r   r"   r}   r~   r   rB  r  bfloat16r   r  assert_array_equalr   r   r   r  r  r   r   r"  s           rD   test_cast_bfloat16_outputz0TestReferenceEvaluator.test_cast_bfloat16_output  s    "3(9D6BB"3(<tfEEfsecU{7KLLL  	
 	
 !''x+++2:>>>;;y122ggdS$K((

%%c!fh77777rG   c                   t          dt          j        d g          }t          dt          j        d g          }t          t	          t          dg dgt          dt          j        dgdg                    t          dg dgt          dt          j        dgd	g                    t          d
g ddg          t          dddgdgd          gd|g|g                    }t          |          }t          j
        g dt          j                  }t          j
        g dt          j                  }|                    d d|i          }t          |d         |           d S )Nr   r   r  scaleru   r6  r  r  rK  QuantizeLinearr   r  r  r  DequantizeLinearr   r  rs  r  rv   r   ru   rm   i  r  r   r   r   r   r   r   r   rj  r"   r}   r~   r   r   r   r  s           rD   test_quantize_linear_e4m3z0TestReferenceEvaluator.test_quantize_linear_e4m3  s|   "3(9D6BB"3(9D6BB" 	)';3DqcC5QQ	   ")&+2JQCRUQVWW	   .0F0F0FNN03.3%aPPP  ' 
 
. !''x+++2:>>>8///rzBBBggdS$K((A)))))rG   c                   t          dt          j        d g          }t          dt          j        d g          }t          t	          t          dg ddg          t          dddgdgd	          gd
|g|gt          dt          j        dgdg          t          dt          j        dgdg          g                    }t          |          }t          j
        g dt          j                  }t          j
        g dt          j                  }|                    d d|i          }t          |d         |           d S )Nr   r   r  r  r  r  r  r   r  rs  ru   r6  r  rK  r  rv   r  r  r  s           rD   %test_quantize_linear_e4m3_initializerz<TestReferenceEvaluator.test_quantize_linear_e4m3_initializer  sA   "3(9D6BB"3(9D6BB.0F0F0FNN03.3%aPPP ):QC#GG(@1#uMM 
 
 !''x+++2:>>>8///rzBBBggdS$K((A)))))rG   c                   t          dt          j        d g          }t          dt          j        d g          }t          t	          t          dg dgt          dt          j        dgdg                    t          dg dgt          dt          j        dgd	g                    t          d
g ddg          t          dddgdgd          gd|g|g                    }t          |          }t          j
        g dt          j                  }t          j
        g dt          j                  }|                    d d|i          }t          |d         |           d S )Nr   r   r  r  ru   r6  r  r  rK  r  r  r  r  r   r  rs  r  rv   )r   ru   rm   i  r  )r   r   r   r   r   r   r   r  r"   r}   r~   r   r   r   r  s           rD   test_quantize_linear_e5m2z0TestReferenceEvaluator.test_quantize_linear_e5m2&  s{   "3(9D6BB"3(9D6BB" 	)';3DqcC5QQ	   ")&+2H1#PSuUU	   .0F0F0FNN03.3%aPPP  ' 
 
. !''x+++2:>>>8111DDDggdS$K((A)))))rG   c                V   t          dt          j        d g          }t          dt          j        d g          }t	          t          t          dg ddg          gd|g|gt          dt          j        dgdg          t          d	t          j        dgd
g          g                    }t          |          }t          j
        g dt          j                  }t          j
        g dt          j                  }|                    d d|i          }t          |d         |           d S )Nr   r   r  r  rs  r  ru   r6  r    )rK  g      `r7        333333@333333@g      @g         @     rv   )r  i         i  r  r    r   r  r   r   )r   r   r   UINT16r   r   r   r   r"   r}   r~   r   uint16r   r   r  s           rD   test_quantize_linear_uint16z2TestReferenceEvaluator.test_quantize_linear_uint16F  sH   "3(9D6BB"3(:TFCC.0F0F0FNN ):QC#GG(:QC%II 
 
 !''x  & *)
 
 
, 8   )
 
 
" ggdS$K((A)))))rG   c                V   t          dt          j        d g          }t          dt          j        d g          }t	          t          t          dg ddg          gd|g|gt          dt          j        dgdg          t          d	t          j        dgd
g          g                    }t          |          }t          j
        g dt          j                  }t          j
        g dt          j                  }|                    d d|i          }t          |d         |           d S )Nr   r   r  r  rs  r  ru   r6  r  r|  )rK  g     r7  r  r  r  r  r  g    @g    g    @g    g     @g      r  r  rv   )r|  r        i  r  r  r  r  ir   r  r  r  r  r   )r   r   r   INT16r   r   r   r   r"   r}   r~   r   int16r   r   r  s           rD   test_quantize_linear_int16z1TestReferenceEvaluator.test_quantize_linear_int16  sH   "3(9D6BB"3(9D6BB.0F0F0FNN ):QC#GG(9A3FF 
 
 !''x  . *1
 
 
4 8  $ ('
 
 
* ggdS$K((A)))))rG   c                Z   t          dt          j        d g          }t          dt          j        d g          }t	          t          t          dg ddgd          gd|g|gt          dt          j        d	gd
g          t          dt          j        d	gdg          g                    }t          |          }t          j
        g dt          j                  }t          j
        g dt          j                  }|                    d d|i          }t          |d         |           d S )Nr   r   r  r  r   r  rs  r  ru   r6  r  r  )i0u  iy  r  i  rv   )g     g     r6  g      }@)r   r   r  r   r   r   r   r   r"   r}   r~   r  r   r   r   r  s           rD   test_dequantize_linear_uint16z4TestReferenceEvaluator.test_dequantize_linear_uint16  s2   "3(:TFCC"3(9D6BB*,B,B,BSEPQ  
 ):QC#GG(:QC%II 
 
  !''x444BIFFF8:::"*MMMggdS$K((A)))))rG   c                Z   t          dt          j        d g          }t          dt          j        d g          }t	          t          t          dg ddgd          gd|g|gt          dt          j        d	gd
g          t          dt          j        d	gdg          g                    }t          |          }t          j
        g dt          j                  }t          j
        g dt          j                  }|                    d d|i          }t          |d         |           d S )Nr   r   r  r  r   r  rs  r  ru   r6  r  i )iiii  rv   )g     @g     @g       g     @)r   r   r  r   r   r   r   r   r"   r}   r~   r  r   r   r   r  s           rD   test_dequantize_linear_int16z3TestReferenceEvaluator.test_dequantize_linear_int16  s2   "3(9D6BB"3(9D6BB*,B,B,BSEPQ  
 ):QC#GG(9A3HH 
 
  !''x000AAA8:::"*MMMggdS$K((A)))))rG   r  r   ru   r   rX  )r   r   r   r   )r   r   r   r   )r   r   r   r   )ru   r   r   r   )r   r  r   r  )r   r  r  r  r   r  )      ?r  ru   r  )r   r   r  r   r  r   r   r   )r  r  r     r   r     r  )r  D   r  r  r  r  r  r  r  r  r   rz  r   )r   r   r   r   r   r  )rz  r  r  )r   r   r   r   c                ~   t          dt          j        d g          }t          dt          j        d g          }t	          j        |t          j                  }	t	          j        |t          j                  }
t          t          t          dg ddg||          gd|g|gt          dt          j        |	j        |	          t          d	t          j        |	j        |
          g                    }t          |          }t	          j        |t          j                  }|Pt	          j        |t          j                  }|                    d d|i          }t          |d
         |           d S |                     t"                    5  |                    d d|i           d d d            d S # 1 swxY w Y   d S )Nr   r   rv   r  r  r?  
block_sizers  r  r  r   )r   r   r   INT8r}   r~   r   int8r   r   r   r   rY   r"   r   r   r   r|   r   r   r  
zero_pointr?  r  r   r   r   
scale_datazp_datar  r  r   r"  s                  rD   test_blocked_quantize_linearz3TestReferenceEvaluator.test_blocked_quantize_linear  s   v #3(9D6BB"3(84&AAXe2:666
(:RW555(...!#-   !2J4Dj   (8*:JGTT	 
 
, !''x,,,x888H''$d,,CCFH-----"":.. + +sDk***+ + + + + + + + + + + + + + + + + +   F22F69F6)r   ru   r   r   )r  r  r   re  )r  -   r<  r  )r   r   rm   r   )rz  r  r  r   )r  r  6   r<  r   r  r9  )ru   ru   r   r   )r   r   r  r  )rz  rz  r  r  )rm   ru   r   )r   rm   r   r   r   r   rb  r  )rw  rb  r  r   r  rK  r  r  )r  r  r  r  r  r  r  r  )rz  r   rm   r   r   rz  c                ~   t          dt          j        d g          }t          dt          j        d g          }t	          j        |t          j                  }	t	          j        |t          j                  }
t          t          t          dg ddg||          gd|g|gt          dt          j        |	j        |	          t          d	t          j        |	j        |
          g                    }t          |          }t	          j        |t          j                  }|Pt	          j        |t          j                  }|                    d d|i          }t          |d
         |           d S |                     t"                    5  |                    d d|i           d d d            d S # 1 swxY w Y   d S )Nr   r   rv   r  r  r  rs  r  r  r   )r   r   r  r   r}   r~   r   r  r   r   r   r   rY   r"   r   r   r   r|   r  s                  rD   test_blocked_dequantize_linearz5TestReferenceEvaluator.test_blocked_dequantize_linearZ  s   J #3(84&AA"3(9D6BBXe2:666
(:RW555*...!#-   !2J4Dj   (8*:JGTT	 
 
, !''x)))x
;;;H''$d,,CCFH-----"":.. + +sDk***+ + + + + + + + + + + + + + + + + +r   c           	     V   d }d}d}d}d}t          dt          j        g d          }t          dt          j        d           }t	          d	dgdg||||
          g}t          t          |d|g|g                    }	t          |	          }
t          j	        
                    dddd                              t          j                  }|
                    d d|i          } ||||||          }|                     t          |d                   t          |                     d S )Nc                   t          j        d                              t           j                  }t          j        | j                  D ]\  }}}}	t          | |t          d|t          j	        |dz
  dz            z
            t          d|t          j        |dz
  dz            z   dz             ||	f         dz            |||||	f<   | |||z  |z  z   |z  z  S )N)r   r   r   r   r   ru   rm   r   )r}   r   rB  r   ndindexrY   rC  r   mathfloorr   ceil)
r   r  betar  rZ  
square_sumr   r   hr  s
             rD   	_expectedz2TestReferenceEvaluator.test_lrn.<locals>._expected  s    ,//66rzBBJ j11  
1a),Aq4:tax1n#=#==>>q49dQh!^#<#<<q@B B   
* 
*
1aA:&&  ;;DEErG   g-C6*?r  r6  r   r   )r   r   r  r  rq  LRN)r  r  r  rZ  rs  r   r   )r   r   r   r  r   r   r   r"   r}   ra  rb  rB  r   r   r   r{   )r   r  r  r  r  rZ  r   rq  r  r  r  r   r"  r   s                 rD   test_lrnzTestReferenceEvaluator.test_lrn  s-   	F 	F 	F" "3(9>>>JJ"3(=tDDecUSETSWXXX
 :eS1#s;;<< ''y~~aAq))00<<ggdS$K((9T5$d;;SVc(mm44444rG   c                   t          j        d                              d                              t           j                  dz   t          j        d                              d                              t           j                  t          j        dt           j                  d}t          ddgdgddgdgd	
          }t          di ||}t          di ||}t          ||           d S )Nr   )ru   ru   r   ru   r   r3  r$  rv   ru  NOTSETrm  r   r   rs   r   r  ro   
r}   rA  r   rB  r   r   r  r0   r1   r   r   r  rB   r   r"  s        rD   test_conv_im2col_1dz*TestReferenceEvaluator.test_conv_im2col_1d  s    :&&..z::AA"*MMPQQ1%%i0077
CC$bj111
 

 cQC
 
 
 (::%:6::)<<E<V<<X&&&&&rG   c                   t          j        d                              d                              t           j                  dz   t          j        d                              d                              t           j                  t          j        dt           j                  d}t          ddgdgd	d	gdgd
          }t          di ||}t          di ||}t          ||           d S )Nr   )rm   r   r   ru   )r   r   r   r$  rv   ru  r   r   r  r  ro   r  r  s        rD   test_conv_im2col_1d_pad0z/TestReferenceEvaluator.test_conv_im2col_1d_pad0  s    9%%--j99@@LLqP9%%--j99@@LL$bj111
 

 cQC
 
 
 (::%:6::)<<E<V<<X&&&&&rG   c                   t          j        d                              d                              t           j                  dz   t          j        d                              d                              t           j                  t          j        dt           j                  d}t          dddgd	d	gg d
ddgd          }t          di ||}t          di ||}t          ||           d S )N   )ru   ru   r   r  ru   rz  ry  r$  rv   ru  r   rv  r  r  ro   r  r  s        rD   test_conv_im2col_2dz*TestReferenceEvaluator.test_conv_im2col_2d  s    ?++33NCCJJ2:VV1%%l33::2:FF$bj111	
 
 !fQF
 
 
 (::%:6::)<<E<V<<X&&&&&rG   c                   t          j        d                              d                              t           j                  dz   dt          j        d                              d                              t           j                  z  t          j        dt           j                  d	}t          dddgddgg d
ddgd          }t          di ||}t          di ||}t          ||           d S )Nr<  )rm   r   r   r   ru   rm   rb  )r   r   ru   rm   r$  rv   ru  r9  r  r  ro   r  r  s        rD   test_conv_im2col_2d_pad0z/TestReferenceEvaluator.test_conv_im2col_2d_pad0  s   =))11-@@GG
SSVWWy''//>>EEbjQQR$bj111	
 
 !fQF
 
 
 (::%:6::)<<E<V<<X&&&&&rG   c                   t          j        d                              d                              t           j                  dz   dt          j        d                              d                              t           j                  z  t          j        dt           j                  d	}t          dddgd
d
gddgd d          }t          di ||}t          di ||}t          ||           d S )Nr  )ru   ru   r   r   ru   rm   rz  ry  r$  rv   ru  r   
SAME_LOWER)rm  r   r   r   rs   r  ro   r  r  s        rD   test_conv_im2col_2d_autopadz2TestReferenceEvaluator.test_conv_im2col_2d_autopad1  s    5!!))-88??
KKaObi&&..|<<CCBJOOO$bj111
 

 !fQF!
 
 
 (::%:6::)<<E<V<<X&&&&&rG   c                   t          j        d                              d                              t           j                  dz   t          j        d                              d                              t           j                  t          j        dt           j                  d}t          dg d	g d
g dg d	d          }t          di ||}t          di ||}t          ||           d S )Ni  )ru   ru   r   r   rK  ru   r  )ru   ru   r   r   r   r$  rv   ru  ru   ru   ru   r  )ru   ru   ru   ru   ru   ru   r  r  ro   r  r  s        rD   test_conv_im2col_3dz*TestReferenceEvaluator.test_conv_im2col_3dC  s   .//W&''VBJ 2&&77>>rzJJ$bj111
 
 ii"###II
 
 
 (::%:6::)<<E<V<<X&&&&&rG   c                   t          j        d                              d                              t           j                  dz   t          j        d                              d                              t           j                  t          j        dt           j                  d}t          dddgd	d	gg d
ddgd          }t          di ||}t          di ||}t          ||           d S )Nrz  rx  ru   r  ry  r{  rv   ru  r   rv  rm   r  r  ro   r  r  s        rD   test_conv_im2col_2d_stridesz2TestReferenceEvaluator.test_conv_im2col_2d_stridesX      =))11,??FFrzRRUVV=))11,??FFrzRR$bj111
 

 !fQF
 
 
 (::%:6::)<<E<V<<X&&&&&rG   c                   t          j        d                              d                              t           j                  dz   t          j        d                              d                              t           j                  t          j        dt           j                  d}t          dd	dgd
d
gg dd	d	gd          }t          di ||}t          di ||}t          ||           d S )Nrz  rx  ru   r  ry  r{  rv   ru  rm   r   rv  r  r  ro   r  r  s        rD   test_conv_im2col_2d_dilationsz4TestReferenceEvaluator.test_conv_im2col_2d_dilationsj  r&  rG   ))r7  )rA  )rB  )r  )rE  )rF  rG  c                <   t          dt          j        d           }t          dt          j        d           }t          j        d                              d                              t          j                  }t          |dgdgd          g}t          t          |d|g|g                    }t          |          }|                    d d|i          }|d         }	|                     |	t          j                   |                     |	j        d           d S )	Nr   r   r   )ru   r   rm   r   rJ  rs  ro   )r   r   r   r}   rA  r   rB  r   r   r   r   r"   r   r   ndarrayr   rY   )
r   opr   r   r   r  r  r  r"  rs
             rD   test_reduce_op_no_axisz-TestReferenceEvaluator.test_reduce_op_no_axis|  s     #3(94@@"3(94@@y||##I..55bjAA2usea8889:eS1#s;;<< ''ggdS$K((Fa,,,"%%%%%rG   )r$  r{  r   r   )r   )r   c           	     ^   t          dt          j        d           }t          dt          j        d           }t          dt          j        d           }t          dt          j        d           }t	          j        dgt          j                  }t          dg ddgd	
          }t          t          |gd|||g|g                    }t          |          }	t	          j        dgt          j                                      d|z            }
t	          j        ddg|z  t          j                  }|	                    d |
||d          d         }|                     |j        d|z             |                     |j        t          j                   t	          j        ddg|                              t          j                  }|	                    d |
||d          d         }|                     |j        d|z             |                     |j        t          j                   d S )Nr   PVr   r   rv   Pad)r   r2  r3  rK  )r   r  r  rs  ru   r$  r   r/  r   r   )r   )r   r   r   rN  r}   r~   r   r   r   r   r"   r   rO  r   r   rY   rw   repeatrB  )r   dimr   r2  r3  r   r  r  r  r  r   pr"  s                rD   test_padzTestReferenceEvaluator.test_pad  s   "3(94@@"3(94@@"3(94@@"3(94@@"RZ000JWWW:tfcAq!9qcBBCC ''HaS
+++33D3J??HaVc\222ggd!!%8899!<D3J///BJ///Iq!fc""))"(33ggd!!%8899!<ECK000BJ/////rG   c                   t          dt          j        d           }t          dt          j        d           }t          ddgdg          t          ddgdgt	          dt          j        dgdg          	          g}t          t          |d
|g|g                    }t          |          }t          j
        dt          j                  }|                    d d|i          d         }|                     |j        d           |                     |j        t          j                   t#          t          j
        dt          j                  |           d S )Nr   r   r  rY   r'  ConstantOfShaper  ru   r  rs  rv   r   ro   )r   r   r   r   r   r  r   r   r"   r}   r~   r   r   r   rY   rw   r  r   r   r   r   r  r  r  r   r"  s           rD   test_constant_of_shapez-TestReferenceEvaluator.test_constant_of_shape  s9   "3(94@@"3(94@@ gsegY???!y!';+=sQCHH	  
 :eS1#s;;<< ''HQbj)))ggdS!H%%a(B'''BI...")444c:::::rG   c                8   t          dt          j        d           }t          dt          j        d           }t          dg dgt	          dt          j        dgdg                    t          d	dgd
g          t          dd
gdgt	          dt          j        dgdg                    t          dddgdg          g}t          t          |d|g|g                    }t          |          }t          j        dt          j                  }|                    d d|i          d         }|                     |j        d           |                     |j        t          j                   t%          t          j        dt          j                  |           d S )Nr   r   r  liker   ru   rm   r  r  rY   r'  r:  r  r  r  r  rs  rv   r   ro   )r   r   r   r   r   r  rN  r   r   r"   r}   r~   r   r   r   rY   rw   r  r   r;  s           rD   test_constant_of_shape_castlikez6TestReferenceEvaluator.test_constant_of_shape_castlike  s   "3(94@@"3(94@@ !#{'9A3DD	   gsegY???!y!';+<qcA3GG	   j5&/C599
  :eS1#s;;<< ''HQbj)))ggdS!H%%a(B'''BI...")444c:::::rG   c           
        dt          j        g dg dg dg dg dgt           j                  i}t          j        g dg d	g d
g dg dgt           j                  t          j        dt           j                  t          j        dt           j                  g}t	          dt
          j        d           }t	          dt
          j        d           }t	          dt
          j        d           }t	          dt
          j        d           }t          ddgg d          g}t          t          |d|g|||g          t          dt                      dz
            g          }t          |          }	|	                    d |          }
|                     t!          |
          d           t#          ddd          D ]}t%          |
|         ||                    d S )Nr   )dg6`gQs[ؿgq2 d!?ggc%^?gQF
?g2o?g?gܝ>G?gG@b?gpA?g/ʿg`Y`?g??g@@?gߥ.gt?>P?g<0?ge~% 9g"?gf<߉xgs nY?gA?gOd* ǼgɀqgZ9?g} ixg`?g«kgY Ȧgd?JKg>Y?g LQ?gu@gc0@"?gZֈɾ?g.ykj?g}Ͽh?g2_ѿgg``m?gVHϿgO?g ?g2 vE?g~ۺg?Ͽg:h T?g(ۿ㣿gp}L?g& ׿gӿg֟?gj@@[?g(SHcÿgR,^Rgͼӟ(ɷ?g'U?gם՟P?g2ÿgk{?g; ȿgW^U0?gn ޒgGgĿg3ſ2ѿgT) 8?g^ҿgSQg=vpp?gS_ſgxпgK/Zeg)4$w?g_!@r?g8z?g0(Ngグg|p=fugoҿgN ?gPL2 ?gɗ֓?gtY?g؁?g"cٿF?ge] d`?gut~g/!?g:'?gS*gH?g=T@Au1?gH{?g_@?ggi- BI?gU?q?gHT`EϿgi4-ٿg" ?gʃ)dg9Ͽg3ֿg3d?gP>g@Ӫg- ,Ggk?g d;mgKT?g8?giz_?gဉDοg0+?g ¬?gO?gy_?g%D?g&j'?g+[gu?gv `˿g	?m?g{A>?gggCv?g4.&?g#?g>ġ@?gTg xg"Ug@F?gZ 7?g$s4`?g?u~ؿg~`ӽ?g?sZgs#|?gZ&!?g|Zzɿg(Ϳ?g^stS$ſg+q9gL>?gUo?gR^Igɿg?V??g蒷?g8-?g_ֿg@}\οgcg)?gĿgOɿg9Z?gWK v]?g>@{?gsVg14 @[n?gEc@ѿgVAg;?r?gj &;g#% ÿg:`i?gB@oƿgf_Xjg=?gHCſgk @]ſgG5?g	. ?gr{?g*8⮤g3Z  ,Zgä?g{`b?gjxvԿg^?g1?g?g 7gzPl߅h?g|?gdy1?g$ 9¿gtՉ?g0_?ge߿gx?X?gI??gG]t?gߛgfϾ"Z?g&@?g̅vʿgҿ@ſg?	?gyW?)dg?FgEFI@3Կg?gZa}gѠ 
:?g5 g)?g~ ?g69q?g?g6XCg|8ҿg?Ԫοg  [0?g.,?g_gԻ?g՟E:g@Ŀg@T?g|iͿgf k̿gE& ?g'@gu^ eŮgP{?gSh?5og=6% ?gg]~:gv!g MgB	 |?g6`r?g]ſgB7?g%Q?g7ف?gg g))L?g*- Jӿg9;ґ?gCr?g>Yͱ?g(?KĿgu gSV?gޟNZ?gE?g?_Sݿg|k`HѿgRS?gۨe?g#@ſg4׶gդϟ?g!5n?g]y ?g-?g}a ?g7_1ԿgrXƿg(;?gQ㿠Kg[#g9*X_4V?go@¿g<~?	ѿgVH?g`2J¿g}3?gڒ ?g.K?ÓgGd?gӕ`?g#K@+g1 ߷?g!?gב ǿg\!>?gmCl7\?gCn~W?g9hgW?2L?gM?gXp?go, 
ǿgs̠?gFė 1?g?ݿg?gTԄ?g	 %ag"d?gg=!p?g?qgAEȿg
?g9c"Vպ?g{wXk?)dgƣg-@ɧӿgˬ?0)?gcſgc fgR˷䤿g	 ?gu9e?glû?g!H?g1?j?gDXԿg7Z??g߄ gs?g%`g%(hg f?g)1ƿg0c@?gU
g`?֠9g=?Nn?gle lgᩱg0@}gK>?gw4򟌆?gWkByEgt??gCU?g2 v?g邀?g; ۿgW\md?g^?ս?gmg,@?gT }ĿgN?gGb Dտgu?gg4\m?gVKן?g7$@g?¿gE?gfFS?g~P?gBMӿgTzտg(?g?Ԏ?g2~>͌?g}8_g$9 ?g?gﲿf?gÑ!`zg@\ F?g~@eǿg8EU?gsC Y?gg ĿgP?go	 
geʿg_ ?g\u8hg Cɿgz]ڈgu% ?gyd*?gf* xq?gZ߿ǥ?g1_9?g^?gQÄɰͿg!`Tg?gԓͧgs)@ig?grJ?gB?gIzgq"?gt:꾿gJd`k?gu=>R?g gr?gu]?gc?gTyf?gH*?gf?g1g&o}пgG`?gxKu?)dgu@?gnO~ҿgJ_!g9 kg +g-nt?g[?g _ÿg2Z?n?g_S`?gA 0cu?gwsRֿgܣgaS˭?gI?g-a`bпg(???g]["=gLֿ#~ѿgZG`?gvϿVڿge?ꖿg|?g2MԿg^;?gX_?g3o-߱?gFV߼?g9ǿgqM&gj,??g:Y+?g?g&@.g(䟑w?gl_{gΧr ?g-f??g g] (?g]v	 Oݿgj`PKӿg$ߏ?gyB@BX?g*gS>ϿgY?geƿg4@?g,P &ݿgz`ҿg	~?gf?	?g?1gq^{пg?g)`$?gHo}?gqyF?g> G?g87@Eɿgɷg	_Ng^E`g)˿gkd`?gjF_g}пgzη?gL@ĿgSؿg>&`e<?gB`h٤?g> gWmN?gb_gtߏvgA gb9?տg7B篿g?g '-\?g>+Ʃ?gzi_`?gbP?gHWo?g!/gw?gEf@
?ge$5g@?gW ?gh<g; ?g g?gbj@ÿg#@`5g%`|?gR`Rrv   )dr  r  r  r     r  r  r  r     r  i   r           r  r        w   r     z   r        r  r  rG  r        r         rJ  rA  r     a   r  rP  r  r  rS  r  r     r  U         s   r  r     r  rX  rE  r        q   r  r  r        r  ^      rB  rA  r  r  r  rM  r  r  r  r     rR     r  rK     rP  rb     ra  r  r  rO  r  rS  F   rD  r  )db   r  r  x   rF  r]  r  rM        rV  r     r     rJ     r  r  rJ  g   r  rL  r     rV  ri  r  r  }   rZ     r^  r  ri  r     rj  j   rP  p   r  rl  rW  rK  rC  r  r  r  r  r  r  r  r\  r  r  r  r  r  rk  r  rg  rj  r  r     n   r  rJ  rs  rs  r  rP  r  r  r  rF  r  r  rA  r  ri  r  r  r  r  u   r  rQ  r  r  rA  rl  r  ri     r  r  rV  r  )dr  r  r  rK  ra  rG  r  r  ri  rt  r  r  r  rD  rW  r  ri  r  r\  rq  r  r  r  r  r     r  r  r  r  r        rs  r  r  rw  r[  r  rw  r  rQ        r     rO  rV     r  r  rJ  r  rs  r  rj  r  rc  rD  rR  r  r  ra  rG  rI  rx  rv  r_  r  r  r  rQ     rl  rB  r}  r  rL  rz  r  rb  r  rM  rl  r  rt  ru  rZ  rR  r  r  rp  r  rO  rz  r  rz  rQ  r  rz  )dr  V   r  r  r}  rG  rw  r`  r  rL  rP  rU  r  r  r{  r}  r  rw  r  rc  rg  r  r  rM  r]  rM  r     r     r  r  rz  >   r  rj  r]  r  r\  r  r  r  r  rd  rI  r  rp  r  r  r  r  rh  rP  rQ  r  rp     rW  rK  rY  m   r  r  ro  r\     rg  r  r  v   rr  r  rn  r  ra  r  rl  rD  r  r  rz  r  rA  r  rW  rh  r  r  r  r  rt  rD  rR  rR  rz  rN  rv  r  r  r  )dr`  r  r  r]  r  rR  r  rX  rJ  r  rn  r  r  r  rW  `   rw  r  r  rJ  r  r  r  r  r  r  rw  rc  ru  r  rt  rW     r  rD  r  r  r  r  rA  r  r  rx  r  r  rS  rq  ru  r  9   r  r  rY  r  r  r  r  rW  rZ  r  rC  r  r  r  rm  rN  rI  r_  r  r  G   rV  r  r  rJ  r  r]  r  r  r     rh  r  r  r  r  rg  r  r  r  r^  rR  rG  rO  r  rP  r  r  rj  r  g    v?r`  r   r  zpDynamicQuantizeLinear)r   r  r  rs  r]   ru   r   r   rm   r   )r}   r~   r   r4  r   r   r   r  r   r   r   r   r   r"   r   r   r{   r   r   )r   r  r   r   r   ScaleZpr  r  r  r"  rq   s               rD   test_dynamic_quantize_linearz3TestReferenceEvaluator.test_dynamic_quantize_linear  s   e e eLe e eLe e eLe e eLe e es@ jCB B BD
N He e eLe e eLe e eLe e eLe e es@ hCB B BF H)<<<HS)))KF
P #3(94@@"3(94@@&w0A4HH#D+*;TBB '$$$ 
 ucA3E277',>,@,@1,DEEF
 
 
 !''ggdE""S1%%%q"b!! 	1 	1ACFHQK0000	1 	1rG   abcdefz.comz.netzabc.comzdef.netr{  )catdogsnakes)catsdogssnakesr/  )r  r  r  ro   )r      ßr   )aau   ßßyyc                n   t          dt          j        d           }t          dt          j        d           }t          dt          j        d           }t          dddgdg          }t	          t          |gd||g|g                    }	t          |	          }
|
                    d t          j	        |          t          j	        |          d          ^}}t          j
                            ||           |                     |j        j        dd	h           |                     |j        |           d S )
Nr   r   r   StringConcatr'  rs  )r   r   Or  )r   r   r  r   r   r   r"   r   r}   r~   r  r  r  rw   kindr   rY   )r   r   r   r   expected_shaper   r   r   r  r  r  r  r   s                rD   test_string_concatz)TestReferenceEvaluator.test_string_concat   s    #3(:DAA"3(:DAA"3(:DAAc
SEJJJ:tfcAq6A3??@@ ''WWT!28A;;#G#GHH


%%fh777fl'#s444~66666rG   z1,2,34,5,6,)123)456)1,4,6r]   r  r]   r  r  )rm   rm   ru   )r  r  r  z5,6)ru   rm   rm   )r  r  r  )r  r]   r]   )r  r  r]   )rm   rm   r   )zhello world !z  hello   world !z hello world   ! )helloworld!r  z	o-n-n--x-z	o-n----nx-)or   r   r]   r   r]   )r  r   r]   r]   r]   nx r  c           	        t          dt          j        d           }t          dt          j        d           }t          dt          j        d           }t	          ddgddg||          }	t          t          |	gd|g||g                    }
t          |
          }t          j	        |t                    }|                    d d|i          ^}}}t          j                            |t          j	        |t                               t          j                            |t          j	        |t          j                             d S )Nr   Splits	MaxSplitsStringSplit)r   r  	delimitermaxsplitrs  rv   )r   r   r  INT32r   r   r   r"   r}   r~   objectr   r  r  rO  )r   r   r  r  expected_splitexpected_num_splitsr   r  r  r  r  r  r  
num_splitsr   s                  rD   test_string_splitz(TestReferenceEvaluator.test_string_split  s2   ^ #3(:TCC'+2DtMM*;8IDRR	5{+
 
 
 :tfcA38KLLMM ''HQf%%%!$Qx!8!8
Q

%%fbh~V.T.T.TUUU

%%!4BHEEE	
 	
 	
 	
 	
rG   c                   t          dg ddg          }t          |gdt          dt          j        d d g          t          dt          j        dg          t          d	t          j        dg          t          d
t          j        d d g          t          dt          j        dg          t          dt          j        dg          t          dt          j        dg          t          dt          j        dg          gt          dt          j        d d g          g          }t          |t          dd          gd          }t          |          }t          j
        g dg dg          }|dz  }|                    t          j                  }t          j
        dgt          j                  }t          j
        dgt          j                  }t          j
        g dg dg dg dg          }|dz  }|                    t          j                  }t          j
        dgt          j                  }	t          j
        dgt          j                  }
t          j
        dgt          j                  }t          j
        d gt          j                  }|                    d t          |||||	|
||                    }t          j                            t          j
        g d!g d"gt          j                  |d#                    d S )$NQLinearMatMul)r   a_scalea_zero_pointr   b_scaleb_zero_pointr  r  r   r'  rs  r   r  ru   r  r   r  r  r  r  r]   r  rz  r   rc   )r  r  r      )r   r  r  r  r  gF%u{?rv   )r  r     )r<  r  r  )r   r     )r  r  r  g!u|?ig'?)r  ir  )ru   ir  r   )r   r   r   r   r   r  r   r   r"   r}   r~   rB  r  r   r   r  r  r  )r   r  r   rf   r   r   r  r  r   r  r  r  r  r"  s                 rD   test_qlinearconv_int8z,TestReferenceEvaluator.test_qlinearconv_int8v  s   	 	 	 E
 
 
 F&sK,=d|LL&y+2CaSII&~{7G!MM&sK,=d|LL&y+2CaSII&~{7G!MM&y+2CaSII&~{7G!MM	 $C):T4LIIJ
 
  ,r2"6"6!7A
 
 

 "*--H(((*;*;*;<==	SHHRW(F82:666x27;;;Hnnnmmm]]]OOOTUU	SHHRW(G9BJ777x27;;;(F82:666x27;;;hh)))	 	 	
 
 	
%%Hmmm\\\2"'BBBCF	
 	
 	
 	
 	
rG   )zwww.google.comzwww.facebook.comzwww.bbc.co.ukzwww\.[\w.-]+\.\bcom\b)TTF)Onnx
tensorflowNumpy)PytorchCythonnumbaz^[A-Z][a-z]*$)TFTr`  )zaccount@gmail.comzaccount@hotmail.comz	not emailzaccount2@yahoo.comz,(\W|^)[\w.\-]{0,25}@(yahoo|gmail)\.com(\W|$))TFFTr0  c                   t          dt          j        d           }t          dt          j        d           }t	          ddgdg|          }t          t          |gd|g|g                    }t          |          }	|	                    d dt          j
        |          i          ^}
}t          j                            |
|           |                     |
j        j        d           |                     |
j        |           d S )Nr   r   RegexFullMatchr   r  patternrs  r   )r   r   r  r  r   r   r   r"   r   r}   r~   r  r  r   rw   r  rY   )r   r   r  r   r  r   r   r  r  r  r  r   s               rD   test_regex_full_matchz,TestReferenceEvaluator.test_regex_full_match  s    8 #3(:DAA"3(8$??)3%#PWXXX:tfcA3<<== ''WWTC!#566


%%fh777*C000~66666rG   c                   t          dt          j        d           }t          dt          j        d           }t	          ddgdgd          }t          t          |gd|g|g                    }t          |          }|                     t                    5  |
                    d dt          j        dg          i           d d d            d S # 1 swxY w Y   d S )Nr   r   r  zx)r  rs  r   )r   r   r  r  r   r   r   r"   r   r|   r   r}   r~   )r   r   r   r  r  r  s         rD   test_regex_invalid_patternz1TestReferenceEvaluator.test_regex_invalid_pattern  s   "3(:DAA"3(8$??)3%#PTUUU:tfcA3<<== ''z** 	2 	2GGD3#0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   ,CCC)r   r         ?rm   ffffff
@r   r  r  )r   r   rm   rm   r   r   r   r   )r   r   r  rm   r  r   r  )r   r   rm   rm   r   r   r   )      -r   r  rm   r  r   r  )r   r   r   rm   rm   rm   rm   rm   )r  r  r   r  rm   r  r   )r   r   r   rm   rm   rm   rm   c                N   t          dt          j        d g          }t          dt          j        d g          }t          t	          t          dg dgt          dt          j        dgdg                    t          dg dgt          d|dgd	g                    t          d
g ddg          t          dddgdgd	          gd|g|g                    }t          |          }|                    d dt          j
        |          i          }t          |d	         |           d S Nr   r   r  r  ru   r6  r  r  r   r  r  r  r  r  rs  r   r   r   r   r   r   r   r"   r   r}   asarrayr   	r   qtyper   r   r   r   r  r  r"  s	            rD   test_quantize_linear_int2z0TestReferenceEvaluator.test_quantize_linear_int2  J   . #3(9D6BB"3(9D6BB" 	)';3DqcC5QQ	   ")&%!qcBB	   .0F0F0FNN03.3%aPPP  ' 
 
. !''ggdS"*T"2"2344A)))))rG   c           
     T   t          d|d g          }t          d|d g          }t          t          t          ddgdg|          gd|g|g                    }t	          |          }t          j        g dt          j        	                    |                    }|
                    t          j        	                    |                    }|                    d d|i          }	|                     |	d                                         |                                           d S 	Nr   r   r  rh  rs  )r   ru   g333333@g@r   r   rv   r   r   r   r   r   r"   r}   r~   r  helpertensor_dtype_to_np_dtyperB  r   r   r   
r   	cast_fromcast_tor   r   r  r  r   r   r"  s
             rD   test_cast_int2_outputz,TestReferenceEvaluator.test_cast_int2_output      #3	D6::"3$88fsecUw???  	
 	
 !''x###+66yAA
 
 
 ;;t{CCGLLMMggdS$K((Q(//*;*;<<<<<rG   r  TensorProto.DataTyper  c           
     $   t          d|d g          }t          d|d g          }t          t          t          ddgdgt          j                  gd|g|g                    }t          |          }t          j        t          d          t          j
                  }|                    t          j                            |                    }|                    d d|i          }	t          j                            |	d         |           d S )	Nr   r   r  rh  rs  rm   rv   r   r   r   r   r   r   r   r"   r}   r~   r   r   rB  r  r  r  r   r  r  r  s
             rD   test_cast_int2_inputz+TestReferenceEvaluator.test_cast_int2_input;       #3	D6::"3$88fsecU{7HIII  	
 	
 !''xa
333;;t{CCINNOOggdS$K((

%%c!fh77777rG   )r   r   rm   rm   r   r   r  r  )r   r   rm   rm   r   r   r  )r  r   rm   rm   r   r   r  )r  r  r   rm   rm   r   r   c                N   t          dt          j        d g          }t          dt          j        d g          }t          t	          t          dg dgt          dt          j        dgdg                    t          dg dgt          d|dgd	g                    t          d
g ddg          t          dddgdgd	          gd|g|g                    }t          |          }|                    d dt          j
        |          i          }t          |d	         |           d S r  r  r  s	            rD   test_quantize_linear_int4z0TestReferenceEvaluator.test_quantize_linear_int4V  r  rG   c           
     T   t          d|d g          }t          d|d g          }t          t          t          ddgdg|          gd|g|g                    }t	          |          }t          j        g dt          j        	                    |                    }|
                    t          j        	                    |                    }|                    d d|i          }	|                     |	d                                         |                                           d S r  r  r  s
             rD   test_cast_int4_outputz,TestReferenceEvaluator.test_cast_int4_output  r  rG   c           
     $   t          d|d g          }t          d|d g          }t          t          t          ddgdgt          j                  gd|g|g                    }t          |          }t          j        t          d          t          j
                  }|                    t          j                            |                    }|                    d d|i          }	t          j                            |	d         |           d S )	Nr   r   r  rh  rs  r   rv   r   r  r  s
             rD   test_cast_int4_inputz+TestReferenceEvaluator.test_cast_int4_input  r  rG   c                   t          dt          j        dg          }t          dt          j        dg          }t          dt          j        dg          }t          dddgdgt	          dg dgd	gd
          t	          dddgdgd          gt          dd          g          }t          dddgdgt	          dg dgd	gd          t	          dddgdg          t	          ddgdgt          t	          ddgdgd          gdg |g          t          t	          dddgdgd          gdg |g          d          gt          dd          t          dd          g          }t          t          t	          ddgdgd          gd|g|g          dt          dd          t          dd          g||g           }dt          j	        d!gt          j
        "          i}t          |          }|                    d |          }	t          j                            t          j	        d#gt          j
        "          |	d$                    d S )%Nr   Nr  thisfctaddinput2r  r   r   CC0r  rW   r   A1r   r]   r  r   r  r  CCrr  r  r  ra   r  r  :IFr  r  rW   ru   r  r   rc   r   rW  r   rv   r   r   r   r   r   r   r   r   r   r   r}   r~   r   r"   r   r  r  
r   r   r  rq  func_def_addfunc_defr  r  rG  r   s
             rD   'test_a_function_calling_a_function_oncez>TestReferenceEvaluator.test_a_function_calling_a_function_once  s   "3(9C5AA'+2CcUKK"8[->FF$JJ*b5'ERRR%(E!2XJTJJJ .b"556

 

 

 !IJ*b5'DQQQ)gu%5x@@HJ *"8gY
6RRRS	! ! !+"57E*:XJrRRRS	! ! !  . #2r**"61--7
 
 
B ecUXJvFFF   "2r**"61-- $X.
 
 
	" bht2:6667!),,88D%(( 	
"RZ @ @ @(1+NNNNNrG   c                   t          dt          j        dg          }t          dt          j        dg          }t          dt          j        dg          }t          dddgdgt	          dg dgd	gd
          t	          dddgdgd          gt          dd          g          }t          dddgdgt	          dg dgd	gd          t	          dddgdg          t	          ddgdgt          t	          ddgdgd          gdg |g          t          t	          dddgdgd          gdg |g          d          gt          dd          t          dd          g          }t          t          t	          ddgdgd          t	          ddgdgd          gd|g|g          d t          dd          t          dd          g||g!          }dt          j	        d"gt          j
        #          i}t          |          }|                    d |          }	t          j                            t          j	        d$gt          j
        #          |	d%                    d S )&Nr   r  r  r  r   r  r  r   r   r  r  r   r  r   r]   r  r   r  r  r  rr  r  r  r  r  r  r  r  ru   ztmpr  r   r	  r   rv   r   r
  r  s
             rD   )test_a_function_calling_a_function_doublez@TestReferenceEvaluator.test_a_function_calling_a_function_double  s   "3(9C5AA'+2CcUKK"8[->FF$JJ*b5'ERRR%(E!2XJTJJJ .b"556

 

 

 !IJ*b5'DQQQ)gu%5x@@HJ *"8gY
6RRRS	! ! !+"57E*:XJrRRRS	! ! !  . #2r**"61--7
 
 
B ecUVHVDDDefXz&III   "2r**"61-- $X.
 
 
	$ bht2:6667!),,88D%(( 	
"RZ @ @ @(1+NNNNNrG   c                D   t          dt          j        dg          }t          dt          j        dg          }t          dt          j        dg          }t          dddgdgt	          dg dgd	gd
          t	          dddgdgd          gt          dd          g          }t          dddgdgt	          dg dgd	gd          t	          dddgdg          t	          ddgdgt          t	          ddgdgd          gdg |g          t          t	          dddgdgd          gdg |g          d          gt          dd          t          dd          g          }t          t          t	          ddgdgd          t	          ddgdgd          gd|g|g          d t          dd          t          dd          g||g!          } G d" d#t                    } ||          }|j	        
                                D ]}	|                     |	|           d S )$Nr   r  r  r  r   r  r  r   r   r  r  r   r  r   r]   r  r   r  r  r  rr  r  r  r  r  r  r  r  ru   r  r  r   r	  c                      e Zd ZdS )[TestReferenceEvaluator.test_overload_reference_implementation.<locals>.MyReferenceEvaluatorNr  ro   rG   rD   MyReferenceEvaluatorr    r  rG   r  )r   r   r   r   r   r   r   r   r"   
functions_r)  r   )
r   r   r  rq  r  r  r  r  rG  rZ  s
             rD   &test_overload_reference_implementationz=TestReferenceEvaluator.test_overload_reference_implementation^  s   "3(9C5AA'+2CcUKK"8[->FF$JJ*b5'ERRR%(E!2XJTJJJ .b"556

 

 

 !IJ*b5'DQQQ)gu%5x@@HJ *"8gY
6RRRS	! ! !+"57E*:XJrRRRS	! ! !  . #2r**"61--7
 
 
B ecUVHVDDDefXz&III   "2r**"61-- $X.
 
 
	$	 	 	 	 	#5 	 	 	 $#I..'')) 	; 	;A!!!%9::::	; 	;rG   ))rj  q=
ףp?)r  r  )r  333333?)r  r  )rv  r   )r   r   )FLOAT16gMb`?)r  g{Gz?styperp  r;  c                   t          t          |          }t          t          t	          ddgdg|          t	          ddgdg|          t	          dddgdg          t	          ddgd	gt          j                  gd
t          dt          j        g d          t          dt          j        g d          gt          d	t          j        g d          g          t          dd          gd          }t          |d          }t          j
        d          dz                      d                              t          j                  }t          j
        d          dz                      d                              t          j                  }t          ||          }||z   }	|                    d |          d         }
t!          |
|	|           d S )Nr  r   Xcrh  r   Ycr   Zcrq  r   r5  r]   rb  rz  r  r   r  r   rm   r   r   ru  ro  )getattrr   r   r   r   r   r   r   r"   r}   rA  r   rB  r   r  r   r   )r   r  rp  ityper  r  r   r   r  r   r"  s              rD   test_add_custom_dtypez,TestReferenceEvaluator.test_add_custom_dtype  s    U++fsedV>>>fsedV>>>edD\D6::ftfse8IJJJ	 *30ACUCUCUVV*30ACUCUCUVV ([->@R@R@RSST  (B//0!
 
 
& !222Yr]]Q''	2299"*EEYr]]Q''	2299"*EEqAq5ggdE""1%XD111111rG   ))rv  )r   )r  )r  )rj  )r  )r  )r  )INT4)UINT4)INT2)UINT2c                   t          t          |          }t          t          t	          ddgdg|          t	          ddgdg|          t	          dddgdg          t	          ddgd	gt          j                  gd
t          dt          j        g d          t          dt          j        g d          gt          d	t          j        g d          g          t          dd          gd          }t          |          }t          j        d          dz                      d                              t          j                  }t          j        d          dz
  dz                      d                              t          j                  }t          ||          }||k    }|                    d |          d         }	t          j                            |	|           d S )Nr  r   r  rh  r   r  r|  r   rq  r   r5  r]   rb  rz  r  r!  ru  r   )r"  r   r   r   r   r  r   r   r   r"   r}   rA  r   rB  r   r  r   r  r  )
r   r  r#  r  r  r   r   r  r   r"  s
             rD   test_cmp_custom_dtypez,TestReferenceEvaluator.test_cmp_custom_dtype  s   " U++fsedV>>>fsedV>>>.ttfEEftfse8HIII	 *30ACUCUCUVV*30ACUCUCUVV ([->@R@R@RSST  (B//0!
 
 
& !''Yr]]R((33::2:FFimma2%..y99@@LLqA6ggdE""1%

X.....rG   c                @   t          t          t          dg ddgdd          gdt          dt          j        d           t          d	t          j        d           t          d
t          j        d           gt          dt          j        d           g          t          dd          g          }t          j	        dt          j
                                      d          }t          j        dggggt          j                  }t          j        dggggt          j
                  }t          j        g dt          j
                                      d          }t          |          }|                    d |||d          }t!          |d         |           d S )Nr  )r   r*  updatesrq  r   addr  rW   r   r*  r,  r]   rb  r   rw  rv   )rm   rm   rm   rm   r   ru   )ru   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~   rO  r"   r   r   )r   r  r   r*  r,  r   r  r"  s           rD   test_scatter_elements_4dz/TestReferenceEvaluator.test_scatter_elements_4d  s   )666"'   *6;3DdKK*9k6GNN*9k6GNN
 ([->EEF! $ (B//0'
 
 
* xBJ///77EE(qcUG9BH555(qcUG9BJ777H<<<BJ
 
 

',

 	
 !''ggdTg'RRSSA"""""rG   c                   |                      d          }t          |          }t          j        dt          j        d                    }|                    dgd|gi          d         }|                     d|j                   d S )	Na  
        <
            ir_version: 8,
            opset_import: [ "" : 21 ]
        >
        preprocess (seq(float[X, Y]) images) => (float[N, 5, 5] preprocessed)
        {
            seq = SequenceMap<
                body=preprocess_single(float[X, Y] image) => (float[5, 5] resized)
                {
                    size = Constant<value=int64[2] {5, 5}>()

                    resized = Resize<
                        mode="linear",
                        axes=[0, 1]
                    >(image, , , size)
                }
            >(images)
            preprocessed = ConcatFromSequence<axis=0, new_axis=1>(seq)
        }
        )r   r   r   rv   preprocessedimagesr   )ru   r   r   )r   r"   r}   r   rw   r   r   rY   )r   r  	evaluatorimageInr  s        rD   test_sequence_axisz)TestReferenceEvaluator.test_sequence_axis!  s      
 
. 'u--	(828I+>+>???/(WI1FGGJFL11111rG   c                
   t          t          t          ddgdgd          gdt          dt          j        d           gt          dt          j        d           g          t          dd          g	          }t          j        	                    d
d          
                    t          j                  }t          |          }|                    d d|i          }|                     |j        |d         j                   d S )N	LeakyRelur   r   r  r  rW   r]   rb  r   r   r   r   )r   r   r   r   r   rv  r   r}   ra  randnrB  r{  r"   r   r   rw   )r   r  r   r  r"  s        rD   test_convert_ml_dtypesz-TestReferenceEvaluator.test_convert_ml_dtypes>  s    ;uC@@@A'[-?FFG'[-?FFG	  (B//0
 
 
 IOOAq!!((44 ''ggdS!H%%#a&,/////rG   c           	        t          j        dt           j                  }t          |d           |                     |j        t           j                   t          t          j        dt           j         t           j         gddt           j         gg dg|j                  |           t          j	        dt           j                  }t          |d           |                     |j        t           j                   t          t          j        ddt           j         t           j         gdddt           j         gg dg|j                  |           d S )Nr  rv   r   ru   r"  r  r9  )
r}   r  float16r+   r   rw   r   r~   r  r   )r   r   s     rD   test_apply_causalz(TestReferenceEvaluator.test_apply_causalM  s@   GF"*---a"*---HbfWrvg&AwC17   		
 	
 	
 HV2:...a"*---HQ"&)Aq!bfW+=|||Lg   	
 	
 	
 	
 	
rG   c                   t          dt          j        g d          }t          dt          j        dg          }t          dt          j        g d          }t	          dddgdg          }t          |gd||g|g          }t          |t          dd	          g
          }t          |           t          j
        d                              d                              t          j                  }t          j        g dt          j                  }|ddddddf         }	t!          |          }
|
                    d||d          d         }t%          ||	           |                     |j        d           dS )zTest CenterCropPad when target shape equals current dimension.

        Validates the fix where comparison should be 'if sh == dim' not 'if sh == a'.
        Uses input (5, 5, 1) with target [1, 1, 1] to test axis 2 where dim=1, sh=1, a=2.
        r   r5  rY   r   r   CenterCropPadrs  r]   rb  r   r  )r   r   ru   r"  rv   rm   N)r   rY   r   )r   r   r   rN  r   r   r   r   r   r}   rA  r   rB  r   r~   rO  r"   r   r   r   rY   )r   r   rY   r   r  r   rf   r   target_shaper   r   r"  s               rD   4test_center_crop_pad_no_change_when_shape_equals_dimzKTestReferenceEvaluator.test_center_crop_pad_no_change_when_shape_equals_dimc  sj    #3(9;M;M;MNN&w0AA3GG"3(9;M;M;MNN3.3%@@D63E
QC88l2r6J6J5KLLL
JIbMM!!),,33BJ??x			:::QqS!A#qqq[>!*--hht1|<<==a@X&&&I.....rG   )r   r   r   r   )FNr   r   r)  )ri   rV   r]  )ri   rV   r^  rV   )r  r  r  r  )r  r   rp  r;  )r+  r  r  r   staticmethodr   r   r   r   r  r  r  r  r#  r.  r1  r5  rE  rH  rQ  r`  rc  re  rg  rm  ro  rx  rz  r}  r  r  r  r  r  r  r   r  r  r  rH  rS  rX  r[  r^  ra  rf  rl  ro  rq  rI   r  r  r  r!  r'  r*  r,  r.  r0  r3  rN   rU  r]  rb  rf  rj  rv  r}  r  r  r  r  r  r  r  r  r  r  r  r  rR   r  r  r  r  r  r  r  r  r  r@  parameterizedexpand	itertoolsproductr}   r~   r  r   rO  r\  re  r  r  r  r  r  r  r  r>   skipIfversion_utilsnumpy_older_thanr  r  r  r  r  r  r  r  r  r  r  rA  r   r   r  r  dstackr  r  r  r  r  r  r   r#  r%  r(  r.  r8  r<  r?  r  r  r  r  r  r  r   r(  r'  r  r   r  r  r  r&  r%  r  r  r  r  r  r  r$  r*  r.  r4  r8  r;  r?  ro   rG   rD   r   r      sG       F    \ 6 6 6 \6p" " "
' ' '- - -' ' 'R' R' R'h/ / /2' ' '#+ #+ #+J-+ -+ -+^2* 2* 2*h' ' '' ' '' ' '1* 1* 1*f' ' '' ' '' ' '
  
  
 $ $ $' ' '' ' '' ' '*> *> *>X1- 1- 1-f5* 5* 5*nl* l* l*\{* {* {*z1' 1' 1'f$ $ $$$ $ $$$ $ $*$ $ $0G* G* G*R- - -& & && & &	0 	0 	0
0 
0 
0% % %& & &% % %* * * (0 (0 (0T Z3 Z3 Z3xy) y) y)vC C CJ
 
 


 
 


 
 


 
 


 
 


 
 

 %( %( %(N'0 '0 '0R 
 
 

 
 
 

     $D/ D/ D/L&+ &+ &+P+ + +B0+ 0+ 0+d+ + +4+ + +0=+ =+ =+~0+ 0+ 0+d#+ #+ #+J)+ )+ )+VS S S&
8 
8 
8 . . .5 5 5 4 4  4: : :02 2 26%2 %2 %2N
> 
> 
>
> 
> 
>> > >.> > >' ' '0 wJ wJ wJ \wJr  ''	    fbf-	8/DERZ   !1b'B7!328DDD	  '3h	5JK"$*   !2q'B7!328DDD	  %y1Iy3IJ"$*   !2r(RG!4BHEEE	 # '3i5IJ"$*   !1b'B7!328DDD	 & '3i5KL"$*   !2q'B7!328DDD	   '3h	5JK"$*   !2r(RH!5RXFFF	 ! (*5)7LM"$*   !2q'B7!328DDD	 & '3h	5JK"$*   !2r(RG!4BHEEE	 !  fbf-	8/DERZ   !1b'B7!328DDD	aYt Hw\	
 \	
^ ^~! ! !^ ^~!F  ''	
 	
 	
 ' ' ' ' '(8# 8# 8#t
 
 
(K K K&" " "*" " "*" " "1+ 1+ 1+f X_&&u--C * *	 *<> > >.~8 ~8 ~8@8 8 8&* * *@* * *0* * *@:* :* :*xB* B* B*H* * *2* * *2  '' IBIbMM))!Q///	!Q''1--  |||\\\: IBIbMM))!Q///	!Q''1--|||\\\: 	"%%a++@  ---444444 	!sR###      %%  [5	
7 7p(+ (+q7 7p(+T  '' 	"%%a++	!Q''1--  ///1A1A1AB 	"%%a++	!Q''1--1A1A1AB 	929Q<<//1556:;;	828aVaV$455xrx!Q!Q@P7Q7QRSS##,,-/OP 	"%%a++IIIyyy1  ...444444 	  AA###	      %%  o?	
A AD'+ '+EA AD'+R 5  5  5D' ' '$' ' '$' ' '&' ' '&' ' '$' ' '*' ' '$' ' '$  ''	
 	
 	

 

& 
&
 

&  ''(L(L(LMM0 0 NM0,; ; ;*; ; ;8c1 c1 c1J!  ''U^ff-	9/EtL$$$se-G-G-GN$///1E1E1EtL		
 
7 
7 
7  '' '" ///2A "!!rS#JR1		 &%%rS#Je5		 ('')?)?)?@"]]NNNOOOD"]]NNNOOOD III&	 LKK+++++++++
 		
 LKK+++++++++
 		
 k*---/K/K/KLA $$V,,{D	
F FN
 
OF FN
6D
 D
 D
L  '' HGG(###	 1002P2P2PQ $$$&9&9&9:	   @***
	
 6	7 	77 6	72 2 2  '' !000(((
  < < <>S>S>STaS) 444***  000'''
 sQC(%	
 ,* *- ,*<  ''	 34 01	
 	
 = = =,  ''	 01 34	
 	
 8 8 8 8*  '' !000+++
  < < <>U>U>UVaS) 444...  000***
 sQC(%	
 ,* *- ,*<  ''	 34 01	
 	
 = = =,  ''	 01 34	
 	
 8 8 8 8*LO LO LO\MO MO MO^I; I; I;V  ''		
 		
 		
 2 2 2 2<  ''	
 	
 	
  / /!  /<# # #@2 2 2:0 0 0
 
 
,/ / / / /rG   r   __main__rm   )	verbosity)r   r   r   r   r   r   rs   r   r   r   r   r   )c__doc__
__future__r   r;   rC  r  r>   
contextlibr   	functoolsr   ior   osr   textwrapr	   typingr
   r  rO  r}   rA  rF  numpy.testingr   r  r   r   r   r   r   r   $onnx.backend.test.case.node.roialignr   onnx.checkerr   	onnx.defsr   onnx.helperr   r   r   r   r   r   r   r   r   r   r   r    onnx.numpy_helperr!   onnx.referencer"   onnx.reference.op_runr#   r$   onnx.reference.opsr%   %onnx.reference.ops._op_common_indicesr&   r'   onnx.reference.ops._op_listr(   r)   3onnx.reference.ops.aionnx_preview_training._op_listr*   onnx.reference.ops.op_attentionr+   onnx.reference.ops.op_celur,   onnx.reference.ops.op_col2imr-   r.   onnx.reference.ops.op_convr/   r0   onnx.reference.ops_optimizedr}  .onnx.reference.ops_optimized.op_conv_optimizedr1   collections.abcr2   rV   r3   r5   rI   rN   rR   r[   rj   r   r   TestCaser   r+  mainro   rG   rD   <module>rh     so    # " " " " "           & & & & & &                                                     ) ) ) ) ) )                 L K K K K K $ $ $ $ $ $ ( ( ( ( ( (                            ) ( ( ( ( ( - - - - - - 4 4 4 4 4 4 4 4 & & & & & & G G G G G G G G 5 5 5 5 5 5 5 5 D D D D D D 9 9 9 9 9 9 . . . . . .        B A A A A A A A > > > > > > V V V V V V )((((((
  #s66*H##N#NOO '*s
F1488( ( $
      0 0 0  (- - -`" " " "*d^/ d^/ d^/ d^/ d^/X. d^/ d^/ d^/N} zHMA rG   