
    h                       S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SSKJrJr  SSKrSSKrSSKrSS	KJr  SS
KJrJrJrJrJrJr  SSKJ r   SSK!J"r"  SSK#J$r$  SSK%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3  SSK4J5r5J6r6J7r7  SSK8J9r9  SSK:J;r;J<r<  SSK=J>r>  SSK?J@r@JArA  SSKBJCrCJDrD  SSKEJFrF  SSKGJHrH  SSKIJJrJJKrK  SSKLJMrMJNrN  SSKOJMrP  SSKQJRrR  \S" \" SS5      5      rT\S" \" SS5      5      rUS rVS  rWS! rXS" rYS# rZS$ r[S%\R                  S&\\SS'4   S(\\S   S)\\S   S*\\S   S+\R                  4S, jr] " S- S.\R                  5      r_\`S/:X  a  \R                  " S0S19  gg)2z
You can run a specific test by using the following syntax.

::

    python onnx/test/reference_evaluator_test.py TestReferenceEvaluator.test_function_attribute_nested_graph
    N)redirect_stdoutwraps)StringIO)getenv)dedent)SequenceTuple)assert_allclose)AttributeProtoFunctionProto
ModelProtoTensorProtocheckerparser)get_roi_align_input_values)check_model)onnx_opset_version)float32_to_bfloat16float32_to_float8e4m3float32_to_float8e5m2make_function
make_graph
make_modelmake_model_gen_version	make_nodemake_opsetidmake_sequence_type_protomake_tensormake_tensor_sequence_value_infomake_tensor_value_infomake_value_info)float8e4m3_to_float32float8e5m2_to_float32
from_array)ReferenceEvaluator)OpRunOpRunExpand)load_op)_get_indices_is_out)Cast_19Celu)Adam)_vcelu1)_col2im_naive_implementation_2dcol2im_naive_implementation)Conv_conv_implementation)r2   )_conv_implementation_im2colORT_MAX_IR_SUPPORTED_VERSION8$ORT_MAX_ONNX_OPSET_SUPPORTED_VERSION18c                 0   ^  [        T 5      U 4S j5       nU$ )Nc                  l   >  SS K nAT" U 0 UD6  g ! [         a    [        R                  " S5      S ef = f)Nr   zonnxruntime not installed)onnxruntimeImportErrorunittestSkipTest)argskwargsr;   fns      \/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/test/reference_evaluator_test.pywrapper'skip_if_no_onnxruntime.<locals>.wrapperK   E    	K 	DF  	K##$?@dJ	K    "3r   rA   rC   s   ` rB   skip_if_no_onnxruntimerH   J        
2Y  N    c                 0   ^  [        T 5      U 4S j5       nU$ )Nc                  l   >  SS K nAT" U 0 UD6  g ! [         a    [        R                  " S5      S ef = f)Nr   ztorch not installed)torchr<   r=   r>   )r?   r@   rM   rA   s      rB   rC   !skip_if_no_torch.<locals>.wrapperY   sE    	E 	DF  	E##$9:D	ErF   r   rG   s   ` rB   skip_if_no_torchrO   X   rI   rJ   c                 0   ^  [        T 5      U 4S j5       nU$ )Nc                  l   >  SS K nAT" U 0 UD6  g ! [         a    [        R                  " S5      S ef = f)Nr   ztorchvision not installed)torchvisionr<   r=   r>   )r?   r@   rR   rA   s      rB   rC   'skip_if_no_torchvision.<locals>.wrapperg   rE   rF   r   rG   s   ` rB   skip_if_no_torchvisionrT   f   rI   rJ   c                 r    [        U[        5      (       a  [        XU5      $ [        U5      n[	        XU5      $ N)
isinstanceintr    r   r"   )name	elem_typeshapes_types       rB   make_sequence_value_infor]   t   s3    )S!!.tFF%i0F4//rJ   c                     SS K n[        nU R                   H!  nUR                  S;   d  M  UR                  n  O   U R
                  [        :  d
  U[        :  a  g UR                  U R                  5       S/S9$ )Nr   ) zai.onnxCPUExecutionProvider)	providers)	r;   r7   opset_importdomainversion
ir_versionr5   InferenceSessionSerializeToString)
onnx_modelortonnx_domain_opsetopsets       rB   run_ort_inferencerl   {   s{    <((<<?* % ) 	 <<CC$$&3I2J    rJ   c           	         [        U[        5      (       d  [        S[        U5      < S35      e[	        U R
                  5      [	        U5      :w  a  [        SU R
                  < SU< S35      e[	        U5      S-  n[        R                  " [        U5       Vs/ s H  ocU   X6U-      4PM     sn5      n[        U R
                  U-   5      n[        U5       HC  n	X   X   S-
  X)   S-
  -  -   n
[        X   U
-
  Xy   S   -   Xy   S   -   XI   -  S-   5      nXU	'   ME     [        U5      n[        R                  " XR                  S	9n[        R                  " U5      n[        R                  " UR
                  S
U*  5      n[        U5       H  n[        XmR
                  S
U*  5      n[        U5      n[        U5       Hs  n[        UU5      n[        U5      nUU-  US
S
2S4   -
  UU-  -   n[        U5      n[!        UU R
                  5      (       a
  SUUU-   '   M_  U [        U5         UUU-   '   Mu     M     U$ s  snf )z
Naive implementation for `im2col`.

:param image: image (float)
:param kernel_shape: kernel shape
:param dilations: dilations
:param pads: pads
:param strides: strides
:return: result
zUnexpected type z for kernel_shape.zShape mismatch z and .      r   dtypeN)rW   tuple	TypeErrortypelenr[   
ValueErrornparrayrangelistrX   zerosrr   prodr*   r+   )datakernel_shape	dilationspadsstridesn_dimsinew_padslist_output_shapedkdndoutput_shapereskernel_sizeres_sizei_rest_resji_kernelt_kerneli_imgt_imgs                          rB   im2col_naive_implementationr      s*    lE***4+=*@@RSTT
4::#l++?4::.l=MQOPPY!^FxxeFmLmq'4F
#34mLMHTZZ,676]_! 3	q8HII"R'(+a.88;q>IWZW
  "!  *+L
((<zz
2C'','Kwwsyy6'*+H8_Q		(F7 34e{#A#A|4HXHGOhq!tn4x)7KKE%LEudjj))()EH$%(,U5\(:EH$% $  J7 Ms   H=imgr   .r   r   r   returnc           	         S n[        U R                  S   5       Hw  n[        U R                  S   5       HX  n[        XUS4   XX45      nUc:  U R                  S S UR                  -   n	[        R                  " XR
                  S9nXXgS4'   MZ     My     UR                  S [        U5      *  S-   n	UR                  U	5      $ )Nr   rp   .ro   rq   ))rz   r[   r   rx   emptyrr   rv   reshape)
r   r   r   r   r   r   ncout	new_shapes
             rB   im2colr      s     C399Q< syy|$A-q#IC {IIbqMCII5	hhy		: c	N % ! 		.S../%7I;;y!!rJ   c                   H   \ rS rSrSr\S\S\4S j5       r\SS j5       r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-\.S, 5       r/\.S- 5       r0S. r1S/ r2S0 r3S1 r4S2 r5S3 r6S4 r7\8S5 5       r9S6 r:\8S7 5       r;\8S8 5       r<S9 r=S: r>S; r?S< r@S= rAS> rBS? rCS@ rDSA rESB rF\GR                  " \IR                  " SC5      SD5      SE 5       rK\GR                  " \IR                  " SC5      SD5      SF 5       rLSG rMSH rN\.SI 5       rOSJ rP\8\QSK 5       5       rRSL rSSM rTSN rUSO rVSP rWSQ rXSR rYSS rZ\SSU j5       r[\\R                  R                  \^R                  " SV\`R                  " \`R                  \`R                  /SWSX//\`R                  SY9\`R                  " SZS[/S\S]//\`R                  SY9/4S^\`R                  " S_S`/SaSb//\`R                  SY9\`R                  " ScSd/SeSd//\`R                  SY9/4Sf\`R                  " SgSh/SiSj//\`R                  SY9\`R                  " SkSc/SeSd//\`R                  SY9/4Sl\`R                  " SmSn/SoSp//\`R                  SY9\`R                  " SdSc/SeSd//\`R                  SY9/4Sq\`R                  " SrSs/StSu//\`R                  SY9\`R                  " SeSd/SeSd//\`R                  SY9/4Sv\`R                  " SwSx/SySz//\`R                  SY9\`R                  " SeSk/SeSk//\`R                  SY9/4S{\`R                  " S|S}/S~S//\`R                  SY9\`R                  " SeSd/SeSd//\`R                  SY9/4ST\`R                  " SS/SS//\`R                  SY9\`R                  " SkSc/SeSd//\`R                  SY9/4S\`R                  " \`R                  \`R                  /SWSX//\`R                  SY9\`R                  " SZS[/SeSd//\`R                  SY9/4/	SSc/5      5      S\e4S j5       rf\\R                  R                  / SQ5      SS\eS\e4S jj5       rgS rhS riS rjS rkS rlS rmS rnS roS rpS rqS rrS rsS rtS ruS rvS rwS rxS ryS rzS r{S r|S r}S r~\\R                  R                  / SQ5      S 5       r\\R                  R                  / SQ5      S 5       rS rS rS r\\R                  R                  SS/SS/SS/S4/ SQS// SQS4S/ SQ/ SQ/ SQS4/5      S 5       r\\R                  R                  SS/SS/ SQ/ SQ/SS/4/ SQSSSS/SS/SS/// SQ4/ SQSSSS/SS/SS/// SQ4/ SQ/ SQ/SS/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/// SQ/ SQ/4/ SQSS/ SQ/ SQ/ SQ// SQ4/ SQSS/ SQ/ SQ/ SQ// SQ4SS/SS/ SQ/ SQ/SdSd/4/ SSZ\`R                  " / 5      GR                  S5      / 4/5      S 5       r\\R                  R                  / SQS/ SQS4/ SQ/ SQ/S/ SQ/ SQ/S4/ SQS/ SQS4/5      \GR                  " \GR                  S:H  S5      S 5       5       r\GR                  " \GR                  S:H  S5      S 5       rSrg)TestReferenceEvaluator   a6  
        <
            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_defr   c                 ^    [         R                  " U 5      n[        R                  " U5        U$ )z[
Parses a model from a string representation, including checking
the model for correctness
)r   parse_modelr   r   )r   ms     rB   _load_model"TestReferenceEvaluator._load_model   s'     u%ArJ   Nc                   ^^ [        S[        R                  S S /5      n[        S[        R                  S S /5      n[        S[        R                  S S /5      n[        S[        R                  S /5      n[        SSS/S/5      nU (       GaC  [        SSS/S/5      n	Ubl  US	:  af  T(       a&  T(       a  [        S
S/S/TTS9n
O4[        S
S/S/TS9n
O%T(       a  [        S
S/S/TS9n
O[        S
S/S/5      n
[	        XU
/SXEU/U/5      nOT(       a,  [        [        R                  " T/[        R                  S9SS9OS nT(       a,  [        [        R                  " T/[        R                  S9SS9OS nSU(       a  SOSU(       a  SOS/n[        S
US/5      n
X4 Vs/ s H  o(       d  M  UPM     nn[	        XU
/SXEU/U/US9nUU4S jnO%[        SSS/S/5      n	[	        X/SXEU/U/5      nS nUc  [        U5      nO[        U[        SU5      /S9n [        U5        UU4$ s  snf ! [         a  n[        SU 35      UeS nAff = f)NXABYMatMulXAAddY_clip   Clip)minmax)r   )r   lrrq   mirY   mar_   initializerc                 >   > [         R                  " X-  U-   TT5      $ rV   )rx   clip)xab	max_value	min_values      rB   <lambda>;TestReferenceEvaluator._linear_regression.<locals>.<lambda>  s    	9i HrJ   c                     X-  U-   $ rV    )r   r   r   s      rB   r   r     s
    	rJ   opset_importszchecker fails for
)r!   r   FLOATr   r   r%   rx   ry   float32r   r   r   	ExceptionAssertionError)r   rk   r   r   r   r   r   r   node1node2node3graphr   r   inputs_r   frh   es     ``                rB   _linear_regression)TestReferenceEvaluator._linear_regression   si   "3(9(9D$<H"3(9(9D$<H"3(9(9D$<H"3(9(9D6B(S#J7edC[8*=E URZ  )"XJ9)! !*&8*se S%fxj3%YOE%fxj3%@E"E%#8$q	A3O ! rxx2::FTR  ! rxx2::FTR 
 #BDBK!&&3%8+-(8(Qaq(8"5)4!QC[ IAedC[3%8E~taAYDE)A=#E*J#E,r5:Q9RSJ	L
# 1}# 9  	L #6zl!CD!K	Ls$   !
H*/H*H/ /
I9IIc                     [        S[        R                  S S /5      nU R                  [        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nr   )r!   r   r   assertRaisesrt   r&   )selfr   s     rB   #test_reference_evaluator_exceptions:TestReferenceEvaluator.test_reference_evaluator_exceptions   s<    "3(9(9D$<Hy)q! *))s   A
Ac                    [         R                  [         R                  5      n[        R                  " U5        [        U5      nU R                  UR                  / SQ5        U R                  UR                  S/5        U R                  UR                  SSS.5        [        R                  " SS/SS//[        R                  S	9n[        R                  " S
S/SS//[        R                  S	9n[        R                  " SS/SS//[        R                  S	9nUR                  S X4US.5      S   nX4-   XE-
  -  n[        Xv5        g NB01B11B21D0
   rp   )r_   zcom.microsoftr   ro      rq               )r   r   m2_defr   r   r&   assertEqualinput_namesoutput_namesopsetsrx   ry   r   runr   r   r   sessr   yzr   expecteds           rB   %test_reference_evaluator_no_attribute<TestReferenceEvaluator.test_reference_evaluator_no_attribute%  s   "../E/L/LMA!!$))+@A**TF32&BCHHq!fq!f%RZZ8HHq!fq!f%RZZ8HHr2hR)<hhtQ;<Q?Eae$&rJ   c                    [         R                  [         R                  5      n[        R                  " U5        [        UR                  5       5      nU R                  UR                  / SQ5        U R                  UR                  S/5        U R                  UR                  SSS.5        [        R                  " SS/SS//[        R                  S	9n[        R                  " S
S/SS//[        R                  S	9n[        R                  " SS/SS//[        R                  S	9nUR                  S X4US.5      S   nX4-   XE-
  -  n[        Xv5        g r   )r   r   r   r   r   r&   rg   r   r   r   r   rx   ry   r   r   r   r   s           rB   +test_reference_evaluator_no_attribute_bytesBTestReferenceEvaluator.test_reference_evaluator_no_attribute_bytes3  s   "../E/L/LMA!!"5"5"78))+@A**TF32&BCHHq!fq!f%RZZ8HHq!fq!f%RZZ8HHr2hR)<hhtQ;<Q?Eae$&rJ   c           	         [         R                  [         R                  5      n[        R                  " SS/SS//[        R
                  S9n[        R                  " SS/SS	//[        R
                  S9n[        R                  " S
S/SS//[        R
                  S9nU R                  SS9   [        USS9n[        5       n[        U5         UR                  S X#US.5        S S S 5        UR                  5       nSnU R                  X5        S S S 5        U R                  SS9   [        USS9n[        5       n[        U5         UR                  S X#US.5        S S S 5        UR                  5       n[        S5      R                  S5      nU R                  X5        S S S 5        U R                  SS9   [        USS9n[        5       n[        U5         UR                  S X#US.5        S S S 5        UR                  5       n[        S5      R                  S5      nU R                  X5        S S S 5        U R                  SS9   [        USS9n[        5       n[        U5         UR                  S X#US.5        S S S 5        UR                  5       n[        S5      R                  S5      nU R                  X5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNf= f! , (       d  f       GN+= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   rp   ro   r   rq   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   rx   ry   r   subTestr&   r   r   r   getvaluer   r   lstrip)	r   r   r   r   r   r   stdoutr   logs	            rB   -test_reference_evaluator_no_attribute_verboseDTestReferenceEvaluator.test_reference_evaluator_no_attribute_verboseA  s   "../E/L/LMHHq!fq!f%RZZ8HHq!fq!f%RZZ8HHr2hR)<\\\"%a3DZF (q1=> )//#CQCS& # \\\"%a3DZF (q1=> )//#C
 fTl  S&' #* \\\"%a3DZF (q1=> )//#C
 fTl  S&' #* \\\#%a4DZF (q1=> )//#C$ fTl% & S&3 $#a )( #" )( #"0 )( #"0 )( $#s   . KK$+K& K>K,AK>6 L"L,AL" M&L3<AM
K	K
K),
K;	6K>>
L
L	L""
L03
M	=M
Mc                    [         R                  5       u  p[        R                  " SS/SS//[        R                  S9n[        R                  " SS/[        R                  S9n[        R                  " S/[        R                  S9nU" X4U5      n[        U5      nUR                  S XDUS.5      S   n[        Xh5        g )Nr   rp   ro   r   rq   r   r   r   r   )r   r   rx   ry   r   r&   r   r   )	r   r   r   r   r   r   r   r   gots	            rB   test_reference_evaluator_lr2TestReferenceEvaluator.test_reference_evaluator_lr  s    &99;HHq!fq!f%RZZ8HHaV2::.HHbT,Q1:!"%hht1156q9&rJ   c                    U R                  SS9   [        R                  SS9u  p[        R                  " SS/SS//[        R
                  S	9n[        R                  " SS/[        R
                  S	9n[        R                  " S
/[        R
                  S	9nU" X4U5      n[        U5      nUR                  S   nU R                  UR                  R                  S5        UR                  S XDUS.5      S   n	[        Xi5        S S S 5        U R                  SS9   [        R                  SS S9u  p[        R                  " SS/SS//[        R
                  S	9n[        R                  " SS/[        R
                  S	9n[        R                  " S
/[        R
                  S	9nU" X4U5      n[        U5      nUR                  S   nU R                  UR                  R                  S5        UR                  S XDUS.5      S   n	[        Xi5        S S S 5        U R                  SS9   [        R                  SS S9u  p[        R                  " SS/SS//[        R
                  S	9n[        R                  " SS/[        R
                  S	9n[        R                  " S
/[        R
                  S	9nU" X4U5      n[        U5      nUR                  S   nU R                  UR                  R                  S5        UR                  S XDUS.5      S   n	[        Xi5        S S S 5        g ! , (       d  f       GN(= f! , (       d  f       GN.= f! , (       d  f       g = f)Nmin+maxoptT)r   r   rp   ro   r   rq   r   r   Clip_11r  r   )r   r   r   )r   r   )r  r   r   rx   ry   r   r&   	rt_nodes_r   	__class____name__r   r   
r   r   r   r   r   r   r   r   	last_noder  s
             rB    test_reference_evaluator_lr_clip7TestReferenceEvaluator.test_reference_evaluator_lr_clip  s   \\i\(*==4=HEB1a&1a&)<A!Qrzz2A"RZZ0AqzH%b)Dr*IY00999E((4qq!9:1=CH* ) \\e\$*==4SW=XEB1a&1a&)<A!Qrzz2A"RZZ0AqzH%b)Dr*IY00999E((4qq!9:1=CH* % \\e\$*==4SW=XEB1a&1a&)<A!Qrzz2A"RZZ0AqzH%b)Dr*IY00999E((4qq!9:1=CH* %$1 )( %$ %$s&   C4L%C5L7'C5M	%
L47
M	
Mc                 
   U R                  SS9   [        R                  SSS9u  p[        R                  " SS/SS	//[        R
                  S
9n[        R                  " SS/[        R
                  S
9n[        R                  " S/[        R
                  S
9nU" X4U5      n[        U5      nUR                  S   nU R                  UR                  R                  S5        U R                  UR                  S5        U R                  UR                  S5        UR                  S XDUS.5      S   n	[        Xi5        S S S 5        U R                  SS9   [        R                  SSS S9u  p[        R                  " SS/SS	//[        R
                  S
9n[        R                  " SS/[        R
                  S
9n[        R                  " S/[        R
                  S
9nU" X4U5      n[        U5      nUR                  S   nU R                  UR                  R                  S5        U R                  UR                  S5        U R                  UR                  S5        UR                  S XDUS.5      S   n	[        Xi5        S S S 5        U R                  SS9   [        R                  SSS S9u  p[        R                  " SS/SS	//[        R
                  S
9n[        R                  " SS/[        R
                  S
9n[        R                  " S/[        R
                  S
9nU" X4U5      n[        U5      nUR                  S   nU R                  UR                  R                  S5        U R                  UR                  S5        U R                  UR                  S5        UR                  S XDUS.5      S   n	[        Xi5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GNg= f! , (       d  f       g = f)Nr  r  Tr   )r   rk   r   rp   ro   r   rq   r   r   Clip_6r  r   )r   rk   r   g   r   )r   rk   r   g   G)r  r   r   rx   ry   r   r&   r  r   r  r  r   r   r   r   r  s
             rB   "test_reference_evaluator_lr_clip_69TestReferenceEvaluator.test_reference_evaluator_lr_clip_6  s>   \\i\(*==4r=REB1a&1a&)<A!Qrzz2A"RZZ0AqzH%b)Dr*IY00998DY]]B/Y]]A.((4qq!9:1=CH* ) \\e\$*==t > EB 1a&1a&)<A!Qrzz2A"RZZ0AqzH%b)Dr*IY00998DY]]A.Y]],BC((4qq!9:1=CH* %  \\e\$*==t > EB 1a&1a&)<A!Qrzz2A"RZZ0AqzH%b)Dr*IY00998DY]]B/Y]],AB((4qq!9:1=CH* %$= )( %$  %$s&   D-OD.O"D.O4
O"
O14
Pc                     [         R                  " S5      n[        U5      n[        R                  " / SQ[        R
                  S9R                  S5      nUR                  S SU05      S   nUn[        XT5        g )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   rp   r   rq   rp   rp   r   r   r   )	r   r   r&   rx   ry   uint8r   r   r   )r   r   r   r   resultr   s         rB   test_nested_local_functions2TestReferenceEvaluator.test_nested_local_functions  si    )+
Z "!$HHYbhh/77	B$a)!,)rJ   c                    [        S[        R                  S S /5      n[        S[        R                  S /5      n[        SS/S/S/SS9n[	        U/SU/U/5      n[        U[        SS5      /S	9n[        U5        [        R                  " S
5      R                  S5      R                  [        R                  5      nUR                  SSS9n[        U5      nUR                  S SU05      S   n	[!        Xy5        g )Nr   r   	ReduceSumrp   axeskeepdimsrsr_   r   r   <   r   r   r   axisr)  r   r!   r   r   r   r   r   r   r   rx   aranger   astyper   sumr&   r   r   
r   r   r   r   r   rh   r   r   r   r  s
             rB   test_reduce_sum_11)TestReferenceEvaluator.test_reduce_sum_11'  s    "3(9(9D$<H"3(9(9D6B+use1#JE7D1#s3l2r6J5KL
JIIbM!!),33BJJ?55a!5,!*-hhtc1X&q)&rJ   c                    [        S[        R                  S S /5      n[        S[        R                  S /5      n[        SS/S/S/SS9n[	        U/SU/U/5      n[        U[        SS5      /S	9n[        U5        [        R                  " S
5      R                  S5      R                  [        R                  5      nXf-  R                  SSS9n[        U5      nUR                  S SU05      S   n	[!        Xy5        g )Nr   r   ReduceSumSquarerp   r'  r*  r_   r   r   r+  r,  r-  r   r/  r3  s
             rB   test_reduce_sum_square_110TestReferenceEvaluator.test_reduce_sum_square_114  s    "3(9(9D$<H"3(9(9D6B+cUSEaPE7D1#s3l2r6J5KL
JIIbM!!),33BJJ?E;;A;2!*-hhtc1X&q)&rJ   c                 v   [        S[        R                  S S /5      n[        S[        R                  S S /5      n[        S[        R                  S /5      n[	        SSS/S/SS9n[        U/SX/U/5      n[        U[        SS	5      /S
9n[        U5        [        R                  " S5      R                  S5      R                  [        R                  5      n[        R                  " S/[        R                  S9nUR!                  SSS9n	[#        U5      n
U
R%                  S XxS.5      S   n['        X5        g )Nr   r   r   r&  rp   r)  r*  r_      r   r+  r,  rq   r-  r   r   r   r!   r   r   INT64r   r   r   r   r   rx   r0  r   r1  r   ry   int64r2  r&   r   r   r   r   r   r   r   r   rh   r   r   r   r   r  s               rB   test_reduce_sum_13)TestReferenceEvaluator.test_reduce_sum_13A  s   "3(9(9D$<H"3(9(9D$<H"3(9(9D6B+SzC51EE7D1&1#6l2r6J5KL
JIIbM!!),33BJJ?HHaS)55a!5,!*-hht1-.q1&rJ   c           
      n   [        5       nSn[        SU5      [        US5      /n[        SSS/S/5      n[        5       nSUl        SUl        [        R                  Ul        UR                  R                  U5        [        US	SS/S/U/US/5      n[        S[        R                  S S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n	[        [        S	SS/S/USS
9/SXx/U	/5      n
[!        XU/S9n[#        U5      n[$        R&                  " S5      R)                  S5      R+                  [$        R,                  5      n[$        R.                  " S/[$        R0                  S9nUR3                  S XS.5      S   nUR5                  SSS9n[7        UU5        g )Ncustomr_   rp   r&  r   r.  r   r)  MyReduceSum)rc   r)  exampler   	functionsr   r   ro   r   rq   )r   r.  r   r-  )r   r   r   r   rY   ref_attr_nameINTru   	attributeappendr   r!   r   r   r?  r   r   r&   rx   r0  r   r1  r   ry   r@  r   r2  r   )r   rk   
new_domainr   nodeattmy_reduce_sumr   r.  r   r   rh   r   r   r   r"  r   s                    rB   test_reduce_sum_attribute0TestReferenceEvaluator.test_reduce_sum_attributeP  s   "$
%b%0,z12MNsFmcU;&!%%c"%&MEFL
 #3(9(9D$<H%fk.?.?$H"3(9(9D6B!&ME% IC
  =/

 "*-IIaL  (//

;HHbT*$a 34Q755b15-&)rJ   c                 z   [        S[        R                  S S /5      n[        S[        R                  S S /5      n[        S[        R                  S /5      n[	        SSS/S/SS9n[        U/SX/U/5      n[        U[        SS	5      /S
9n[        U5        [        R                  " S5      R                  S5      R                  [        R                  5      n[        R                  " S/[        R                  S9nXw-  R!                  SSS9n	[#        U5      n
U
R%                  S XxS.5      S   n['        X5        g )Nr   r   r   r7  rp   r;  r*  r_      r   r+  r,  rq   r-  r=  r   r>  rA  s               rB   test_reduce_sum_square_180TestReferenceEvaluator.test_reduce_sum_square_18  s   "3(9(9D$<H"3(9(9D$<H"3(9(9D6B+c3Z#KE7D1&1#6l2r6J5KL
JIIbM!!),33BJJ?HHaS)E;;A;2!*-hht1-.q1&rJ   c                 r   [        S[        R                  S S /5      n[        S[        R                  S S /5      n[        S[        R                  S /5      n[	        SSS/S/SS9n[        U/SX/U/5      n[        U[        SS	5      /S
9n[        U5        [        R                  " S5      R                  S5      R                  [        R                  5      n[        R                  " / [        R                  S9nUR!                  SS9n	[#        U5      n
U
R%                  S XxS.5      S   n['        X5        g )Nr   r   r   r&  rp   r;  r*  r_   r<  r   r+  r,  rq   r=  r   r>  rA  s               rB   test_reduce_sum_13_empty_axes4TestReferenceEvaluator.test_reduce_sum_13_empty_axes  s   "3(9(9D$<H"3(9(9D$<H"3(9(9D6B+SzC51EE7D1&1#6l2r6J5KL
JIIbM!!),33BJJ?HHRrxx(55!5$!*-hht1-.q1&rJ   c                 v   [        S[        R                  S S /5      n[        S[        R                  S S /5      n[        S[        R                  S /5      n[	        SSS/S/SS9n[        U/SX/U/5      n[        U[        SS	5      /S
9n[        U5        [        R                  " S5      R                  S5      R                  [        R                  5      n[        R                  " / [        R                  S9nXw-  R!                  SS9n	[#        U5      n
U
R%                  S XxS.5      S   n['        X5        g )Nr   r   r   r7  rp   r;  r*  r_   rV  r   r+  r,  rq   r=  r   r>  rA  s               rB   $test_reduce_sum_square_18_empty_axes;TestReferenceEvaluator.test_reduce_sum_square_18_empty_axes  s
   "3(9(9D$<H"3(9(9D$<H"3(9(9D6B+c3Z#KE7D1&1#6l2r6J5KL
JIIbM!!),33BJJ?HHRrxx(E;;;*!*-hht1-.q1&rJ   c                    [        S[        R                  S S /5      n[        S[        R                  S /5      n[        SS/S/SSS9n[	        U/SU/U/5      n[        U[        SS5      /S	9n[        U5        [        R                  " S
5      R                  S5      R                  [        R                  5      n[        U5      nUR                  S SU05      S   n[        Xh5        g )Nr   r   r&  rp   r)  noop_with_empty_axesr*  r_   r<  r   r+  r,  r   r!   r   r   r   r   r   r   r   rx   r0  r   r1  r   r&   r   r   	r   r   r   r   r   rh   r   r   r  s	            rB   "test_reduce_sum_13_empty_axes_noop9TestReferenceEvaluator.test_reduce_sum_13_empty_axes_noop  s    "3(9(9D$<H"3(9(9D6B+useaVWXE7D1#s3l2r6J5KL
JIIbM!!),33BJJ?!*-hhtc1X&q)rJ   c                    [        S[        R                  S S /5      n[        S[        R                  S /5      n[        SS/S/SSS9n[	        U/SU/U/5      n[        U[        SS5      /S	9n[        U5        [        R                  " S
5      R                  S5      R                  [        R                  5      n[        U5      nUR                  S SU05      S   n[        Xf-  U5        g )Nr   r   r7  rp   r`  r*  r_   rV  r   r+  r,  r   rb  rc  s	            rB   )test_reduce_sum_square_18_empty_axes_noop@TestReferenceEvaluator.test_reduce_sum_square_18_empty_axes_noop  s    "3(9(9D$<H"3(9(9D6Buseaa
 E7D1#s3l2r6J5KL
JIIbM!!),33BJJ?!*-hhtc1X&q)s#rJ   c                 ^   [        S[        R                  S S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        SSS/S/5      n[	        U/SX/U/5      n[        U[        SS5      /S9n[        U5        [        R                  " S	5      R                  S
5      R                  [        R                  5      n[        R                  " S/[        R                  S9nXx:  n	[        U5      n
U
R                  S XxS.5      S   n[!        X5        g )Nr   r   ZGreatergr_   r<  r   r   ro   ro   ro   rq   r   r   r   r!   r   r   r   r   r   r   r   rx   r0  r   r1  r   ry   r&   r   r   r   r   r   rj  r   r   rh   r   r   r   r   r  s               rB   test_greater#TestReferenceEvaluator.test_greater  s    "3(9(9D$<H"3(9(9D6B"3(9(9D6B)c3Z#7E7C!!5l2r6J5KL
JIIaL  (//

;HHaS

+5!*-hht1-.q1&rJ   c                 R   [        SSS/S/5      n[        R                  " S5      R                  S5      R	                  [        R
                  5      n[        R                  " S/[        R
                  S9nX#:  n[        U5      nUR                  S X#S	.5      S
   n[        XF5        g )Nrk  r   r   rj  r   rm  ro   rq   rn  r   )
r   rx   r0  r   r1  r   ry   r&   r   r   )r   r   r   r   r   r   r  s          rB   test_node_proto&TestReferenceEvaluator.test_node_proto  s    )c3Z#7IIaL  (//

;HHaS

+5!%(hht1-.q1&rJ   c                 ^   [        S[        R                  S S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        SSS/S/5      n[	        U/SX/U/5      n[        U[        SS5      /S9n[        U5        [        R                  " S	5      R                  S
5      R                  [        R                  5      n[        R                  " S/[        R                  S9nXx:  n	[        U5      n
U
R                  S XxS.5      S   n[!        X5        g )Nr   r   rj  GreaterOrEqualrl  r_   r<  r   r   rm  ro   rq   rn  r   ro  rp  s               rB   test_greater_or_equal,TestReferenceEvaluator.test_greater_or_equal  s    "3(9(9D$<H"3(9(9D6B"3(9(9D6B*S#J>E7C!!5l2r6J5KL
JIIaL  (//

;HHaS

+6!*-hht1-.q1&rJ   c                    [        S[        R                  S /5      n[        S/ S/[	        [
        R                  " S/[
        R                  S95      S9n[        U/S/ U/5      n[        S[        R                  S /5      n[        S/ S/[	        [
        R                  " S/[
        R                  S95      S9n[        U/S/ U/5      n[	        [
        R                  " S/[
        R                  S9S	S
9n[        SSS	/S/5      n[        SS/S/UUS9n[        S[        R                  S S /5      n	[        S[        R                  S /5      n
[        Xx/SU	/U
/U/S9n[        U5      n[        U5      nU R                  [        U5      S5        [
        R                  " S/[
        R                  S9nUR                  S SU05      S   n[        [
        R                  " S/[
        R                  S9U5        [
        R                  " S/[
        R                  S9nUR                  S SU05      S   n[        [
        R                  " S/[
        R                  S9U5        g )NCConstantrp   rq   )value_floatsgthenr   gelsezeror   rk  r   GIfrj  )then_branchelse_branchrl  r   zReferenceEvaluator(X) -> Zr   )r!   r   r   r   r%   rx   ry   r   r   r   r&   r   strr   r   )r   r{  bthen
bthen_bodybelse
belse_bodyr  greaternode_ifr   rj  r   	model_defr   r   r  s                   rB   test_ifTestReferenceEvaluator.test_if  s   "3(9(9D6BE#BHHaS

$CD	
  "qc:
"3(9(9D6BE#BHHaS

$CD	
  "qc:
"((A3bjj9GIV}se<EE""
 #3(9(9D$<H"3(9(9D6BG-sQC!4&Qu%	!),T$@AHHaS

+hhtc1X&q)!BJJ7=HHbT,hhtc1X&q)!BJJ7=rJ   c           
         [        S[        R                  S/5      n[        S[        R                  S/5      n[        R                  " / SQ5      R                  [        R                  5      n[        R                  " / SQ5      R                  [        R                  5      n[        S/ S/[        U5      S9n[        S/ S/[        U5      S9n[        U/S/ U/5      n[        U/S	/ U/5      n[        S
S/S/UUS9n	[        5       n
SU
l        SU
l        U
R                  R                  S/5        U
R                  R                  S/5        U
R                   R                  U	/5        [#        5       nU
R$                  R                  ['        SU5      /5        [        [        SSS/S/S9/S[        S[        R(                  / 5      /[        S[        R                  S/5      /S9n[+        US['        SU5      ['        SS5      /S9nUR,                  R                  U
/5        [/        U5      nUR1                  S S[        R                  " S5      05      n[        R                  " / SQ[        R                  S9n[3        UUS   5        g )Nthen_outr   else_outrp   ro   r   r   r   )r   r   r   ro   rp   r|  r   outputsvalue	then_body	else_bodyr  f_condf_resr   r  r  r  rE  rA   r_   condr   )rc   r   r  r   )nodesrY   r   r  testrp   )producer_namer   Trq   r   )r!   r   r   rx   ry   r1  r   r   r%   r   r   rc   rY   inputextendoutputrP  r   rb   r   BOOLr   rI  r&   r   r   )r   r  r  r   r   then_const_nodeelse_const_noder  r  if_noder   rk   r   r   r   r"  r   s                    rB   test_if_function'TestReferenceEvaluator.test_if_function  s+   )*k6G6G!M)*k6G6G!MHH_%,,RZZ8HH_%,,RZZ8#rJ<z!}
 $rJ<z!}
 0+rH:N	0+rH:N	:I!!
 O	z"		"	wi "$	|B678T(F8eWUV*6;3C3CRHI+E;3D3DqcJK	
  'E2L14MN

 	
A3!!$$$ 8988O2::>&),rJ   c                    [        5       nSn[        SU5      [        US5      /n[        S/ S/5      n[        5       nSUl        SUl        [        R                  Ul        UR                  R                  U5        [        SS	S
/S/5      n[        SSS/S/5      n[        USS	S
/S/XFU/US/5      n[        S	[        R                  S S /5      n	[        S
[        R                  S S /5      n
[        S[        R                  S /5      n[        [        SS	S
/S/U[        S[        R                  S/S/5      S9[        SS/S/5      /SX/U/5      n[!        XU/S9n[#        U5      n[$        R&                  " S5      R)                  S5      R+                  [$        R,                  5      n[$        R.                  " SS/[$        R,                  S9nUR1                  S UUS.5      S   n[$        R2                  " UU-  S-   5      n[5        UU5        g )NrE  r_   rp   r|  r   r  biasr   r   r   r   r   r   LinearRegressionY1former_Bq=
ףp?)rc   r  AbsrG  rH  r   rJ  r   rq   r=  r   )r   r   r   r   rY   rK  TENSORru   rM  rN  r   r!   r   r   r   r   r   r&   rx   r0  r   r1  r   ry   r   absr   )r   rk   rO  r   cstrQ  r   r   linear_regressionr   r   r   r   rh   r   r   r   r"  r   s                      rB   test_function_attribute.TestReferenceEvaluator.test_function_attributeP  s   "$
%b%0,z12MN
B."!((S!(S#J7%$se4)#JEH
 #3(9(9D$<H"3(9(9D$<H"3(9(9D6B&#JF%$Z1B1BQC$P %$#/	 FC
   ;L:M

 "*-IIaL  (//

;HHaWBJJ/$aa 01!466!a%$,'&)rJ   c                 :	   [        5       nSn[        SU5      [        US5      /n[        S/ S/5      n[        5       nSUl        SUl        [        R                  Ul        UR                  R                  U5        [        S/ S/5      n[        5       nSUl        S	Ul        [        R                  Ul        UR                  R                  U5        [        S[        R                  S /5      n[        S[        R                  S /5      n[        U/S
/ U/5      n	[        U/S/ U/5      n
[        S/ S/[        [        R                   " S/[        R"                  S95      S9n[        SS/S/5      n[        SSS/S/5      n[        SS/S/U	U
S9n[        SSS/S/5      n[        SSS/S/5      n[%        USSS/S/XXUU/USS	/5      n[        S[        R                  S S /5      n[        S[        R                  S S /5      n[        S[        R                  S /5      n[        [        SSS/S/U['        S[        R                  S/S /5      ['        S![        R                  S/S"/5      S#9[        S$S/S/5      /S%UU/U/5      n[)        UUU/S&9n[+        U5        [-        U5      nU R/                  UR0                  S   R2                  R4                  S'5        U R/                  UR0                  S   R6                  R2                  R4                  S(5        UR0                  S   R6                  nS)nUR0                   HZ  nUR2                  R4                  R9                  S5      (       d  M/  UR:                  (       d  [=        S*[        U5       S+35      eS,nM\     U(       d  [=        S-5      e[        R>                  " S.5      RA                  S/5      RC                  [        R"                  5      n[        R                   " SS0/[        R"                  S9nURE                  S US-   US1.5      S   n[        RF                  " UU-  S -   5      n[I        UU5        URE                  S US2-
  US1.5      S   n[        RF                  " UU-  S"-   5      n[I        UU5        g )3NrE  r_   rp   r|  B1r  bias1B2bias2r  r  r  r   rq   r  	ReduceMinr   Xminrk  r  r  r   r  r   r   r   r   r   r  r  	former_B1r  	former_B2	  )rc   r  r  r  rG  rH  
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   rJ  r   r=  r   )%r   r   r   r   rY   rK  r  ru   rM  rN  r!   r   r   r   r%   rx   ry   r   r   r   r   r   r&   r   r  r  r  impl_
startswithhas_linked_attributer   r0  r   r1  r   r  r   )r   rk   rO  r   cst1rQ  cst2r  r  r  r  r  minir  r  r   r   r  r   r   r   r   rh   r   fctcheckedrP  r   r   r"  r   s                                  rB   $test_function_attribute_nested_graph;TestReferenceEvaluator.test_function_attribute_nested_graph  sd   "$
%b%0,z12MNR$0#!((c"R$0#!((c")$0A0AD6J)$0A0AD6Jv{B
C	v{B
C	HRXXqc<=	
 sefX69vv&6
C:E!!
 (S#J7%$se4)#JE%7g
 #3(9(9D$<H"3(9(9D$<H"3(9(9D6B&#JF%%k;3D3DqcD6R%k;3D3DqcC5Q %$#/
 FC
"  ;L:M

 	J!*-*44==|LNN1##--668L	
 nnQ%%MMD~~&&11$7700(&tDzl 3/ 0   "  T  IIaL  (//

;HHaWBJJ/$a!e! 45a866!a%$,'&)$a"f1 56q966!a%#+&&)rJ   c                 	   [        5       nSn[        SU5      [        US5      /n[        S/ S/5      n[        5       nSUl        SUl        [        R                  Ul        UR                  R                  U5        [        S/ S/5      n[        5       nSUl        S	Ul        [        R                  Ul        UR                  R                  U5        [        S[        R                  S /5      n[        S[        R                  S /5      n[        U/S
/ U/5      n	[        U/S/ U/5      n
[        S/ S/[        [        R                   " S/[        R"                  S95      S9n[        SSS/S/5      n[        SS/S/U	U
S9n[        S/ S/5      n[        5       nSUl        SUl        [        R                  Ul        UR                  R                  U5        [        S[        R                  S /5      n[        U/S
/ U/5      n[        S[        R                  S /5      n[        XU/S/ U/5      n[        S/ S/[        [        R                   " S/[        R"                  S95      S9n[        SS/S/5      n[        SSS/S/5      n[        SS/S/UUS9n[        SSS /S!/5      n[        S"S!S/S#/5      n[%        US$SS /S#/UUXUU/U/ S%Q5      n[        S[        R                  S S /5      n[        S [        R                  S S /5      n[        S#[        R                  S /5      n[        [        S$SS /S&/U['        S'[        R                  S/S(/5      ['        S)[        R                  S/S*/5      ['        S+[        R                  S/S,/5      S-9[        S.S&/S#/5      /S/UU/U/5      n[)        UUU/S09n[+        U5        [-        U5      n[        R.                  " S15      R1                  S25      R3                  [        R"                  5      n[        R                   " SS3/[        R"                  S9nUR5                  S US-   US4.5      S   n[        R6                  " UU-  S*-   5      n[9        UU5        UR5                  S US5-
  US4.5      S   n[        R6                  " UU-  S6-
  5      n[9        UU5        UR5                  S US7-   US4.5      S   n[        R6                  " UU-  S(-   5      n[9        UU5        g )8NrE  r_   rp   r|  r  r  r  r  r  r  r  c100d   rq   r  rk  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)rc   r  r  r  r  rG  rH  r   rJ  r   r=  r   ix  i  )r   r   r   r   rY   rK  r  ru   rM  rN  r!   r   r   r   r%   rx   ry   r   r   r   r   r   r&   r0  r   r1  r   r  r   ) r   rk   rO  r   r  rQ  r  r  r  
then_body1
else_body1r  r  r  cst3
then_body2
else_body2r  r  r   r   r  r   r   r   r   rh   r   r   r   r"  r   s                                    rB   +test_function_attribute_nested_nested_graphBTestReferenceEvaluator.test_function_attribute_nested_nested_graph  s   "$
%b%0,z12MN R$0#!((c"R$0#!((c")$0A0AD6J)$0A0AD6JR(D
R(D
 HRXXse2::>?	
 9vv&6G >F""
 R$0#!((c")$0A0AD6JR(D
)$0A0AD6Jw 7b8*U
 HRXXqc<=	
 sefX66FF#3m_E!?E""
 (S#J7%$se4)#JE4%7'
 #3(9(9D$<H"3(9(9D$<H"3(9(9D6B&#JF%%k;3D3DqcD6R%k;3D3DqcC5Q%k;3D3DqcD6R %$#/ FC
"  ;L:M

 	J!*-IIaL  (//

;HHaWBJJ/$a!e! 45a866!a%#+&&)$a"f1 56q966!a%#+&&)$a$hQ 78;66!a%$,'&)rJ   c                     " S S5      n " S S[         5      n " S S[         5      n[        S[        R                  S S /5      n[        S[        R                  S /5      n[	        SS/S/S	S
S9n[        U/SU/U/5      n[        U[        S
S5      /S9n[        R                  " S5      R                  S5      R                  [        R                  5      S-   n	U R                  [        5         [        U5        S S S 5        [	        SS/S/S	S
S9n[        U/SU/U/5      n[        U[        S
S5      /S9nU R                  [         5         [        X/S9  S S S 5        [	        SS/S/S	S
S9n[        U/SU/U/5      n[        U[        S
S5      /S9nU R                  [        5         [        X/S9  S S S 5        [	        SS/S/S	S
S9n[        U/SU/U/5      n[        U[        S
S5      /S9n[        XU/S9n
U
R#                  S SU	05      S   nSU	S	-   -  n[%        X5        g ! , (       d  f       GN4= f! , (       d  f       N= f! , (       d  f       N= f)Nc                   $    \ rS rSrSrS rS rSrg):TestReferenceEvaluator.test_custom_node.<locals>._InvAlphais  rE  c                     Xl         X l        g rV   	onnx_node
run_params)r   r  r  s      rB   __init__CTestReferenceEvaluator.test_custom_node.<locals>._InvAlpha.__init__v  s    !*",rJ   c                 &    SXR                   -   -  4$ Nrp   alphar   r   s     rB   _run?TestReferenceEvaluator.test_custom_node.<locals>._InvAlpha._runz      Q^,..rJ   r  N)r  
__module____qualname____firstlineno__	op_domainr  r  __static_attributes__r   rJ   rB   	_InvAlphar  s  s     I-/rJ   r  c                       \ rS rSrS rSrg):TestReferenceEvaluator.test_custom_node.<locals>.InvAlpha2i}  c                 &    SXR                   -   -  4$ r  r  r  s     rB   r  ?TestReferenceEvaluator.test_custom_node.<locals>.InvAlpha2._run~  r  rJ   r   N)r  r  r  r  r  r  r   rJ   rB   	InvAlpha2r  }  s    /rJ   r  c                   "    \ rS rSrSrSS jrSrg)9TestReferenceEvaluator.test_custom_node.<locals>.InvAlphai  rE  Nc                 <    U=(       d    U R                   nSX-   -  4$ r  r  )r   r   r  s      rB   r  >TestReferenceEvaluator.test_custom_node.<locals>.InvAlpha._run  s    +QY))rJ   r   rV   )r  r  r  r  r  r  r  r   rJ   rB   InvAlphar    s     I*rJ   r  r   r         ?rE  )r  rc   r*  rp   r   r+  r,  new_opsr   )r'   r!   r   r   r   r   r   r   rx   r0  r   r1  r   r   NotImplementedErrorr&   rt   r   r   )r   r  r  r  r   r   r   r   rh   r   r   r  r   s                rB   test_custom_node'TestReferenceEvaluator.test_custom_noder  s=   	/ 	/	/ 	/	*u 	* #3(9(9D$<H"3(9(9D6B*secU#hOE7D1#s3l8Q6O5PQ
IIbM!!),33BJJ?!C23z* 4 +use3xPE7D1#s3l8Q6O5PQ
y)z;? * +use3xPE7D1#s3l8Q6O5PQ
23z;? 4 *secU#hOE7D1#s3l8Q6O5PQ
!*6JKhhtc1X&q)C=&+ 43 *) 43s$   1H*H<,I*
H9<
I

Ic                    [        S[        R                  / 5      n[        S[        R                  / 5      n[        S[        R                  / 5      n[	        S[        R
                  S 5      n[	        S[        R
                  S 5      n[        R                  " / SQ5      R                  [        R                  5      n[        S/ S/[        S	[        R
                  UR                  UR                  5       R                  [        5      S
9S9n[        S/ S/[        S[        R                  SS/S
9S9n[        S/ S/[        S[        R                  SS/S
9S9n	[        S/ S/[        S[        R                  SS/S
9S9n
[        SSS/S/S9n[        SSS/S/S9n[        S/ SQS/S9n[        SSS/S/S9n[        SS/S/S9n[        UUUU	UU
UUU/	S X1U/X%/5      n[        S!/ S"QS#/US$9n[        S%S#/S&/SSS'9n[        R                  " S(5      R                  [        R                   5      n/ n[        R                  " S5      R                  [        R"                  5      n[%        [        S)[        S*[        R                  UR                  5      [        S+[        R                  UR                  5      ['        S,[        R
                  / 5      /[        S&[        R
                  S 5      /UU/S-9S.9n[        R                  " / S/Q[        R                  S09n[)        U5      nUUUS".nUR+                  S U5      n[-        UUS   5        g )1Ncond_incond_out
iter_countseq_inseq_outr  r|  r   const_tensor_x)rY   	data_typedimsvalsr  oneconst_tensor_oner   rp   slice_startconst_tensor_zerorp   r   r(  const_tensor_axesr   endr   r  	Unsqueeze	slice_endSlice)r   r  r  	slice_outSequenceInsertIdentity	loop_bodyLoop)
trip_countr  	seq_emptyseq_res)r   r  bodyConcatFromSequencer   )r   r  r.  new_axisr   	loop_testr  r  r  )rY   r   r  r  )r   )      ?r#         @r#  r$        @r#  r$  r%        @r#  r$  r%  r&        @rq   )r!   r   r  r?  r    r   rx   ry   r1  r   r   r   r[   flattenfloatr   r@  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  rP  node_concatr  r  r  r  r   oinfr   r  s                              rB   	test_loop TestReferenceEvaluator.test_loop  sY   
 )K4D4DbI)*k6F6FK+L+:K:KRP
0;;L;LdS1)[=N=NPTUHH_%,,RZZ8 E%%++WWYY[''.		

 #G'%++S		

 $"O(%++S		

 H(%++S		

	 UL%+@5'R&+
 =}

  h%<yk
 "*i[:,W"
 &)
	" 6K	
   ;G
 XXa[''1
	xx{!!"((+ *$k&7&79I9I +6;3C3CTZZP,[+:K:KRP 0{7H7H$OP[)
	 88W**
 "), *DyQhhtV$#a&)rJ   c           	      v   [        S[        R                  S /5      n[        S[        R                  S /5      n[        SS/S/SS9n[	        U/SU/U/5      n[        U5      n[        U5        [        U5      nUR                  S S[        R                  " S[        R                  S9S	-   05      S
   nU R                  UR                  S5        U R                  UR                  [        R                  5        U R                  UR!                  5       S5        U R#                  UR%                  5       S5        g )Nr   r   	Bernoulli        seedrl  ro   r   rq   r  r   gh㈵grZ|
 ?r!   r   r   r   r   r   r   r&   r   rx   r|   r   r   r[   rr   assertGreaterr   
assertLessr   r   r   r   r   r   rh   r   r  s           rB   test_onnxt_runtime_bernoulli3TestReferenceEvaluator.test_onnxt_runtime_bernoulli.  s    "3(9(9D6B"3(9(9D6B+use#>E7C!qc2&
J!*-hhtc288F"**#E#KLMaPF+BJJ/3779e,	8,rJ   c                    [        S[        R                  S /5      n[        S/ S/SSS/S9n[	        U/S/ U/5      n[        U5      n[        U5        [        U5      nUR                  S 0 5      S   nU R                  UR                  S	5        U R                  UR                  [        R                  5        U R                  UR                  5       S5        U R!                  UR#                  5       S
5        g )Nr   RandomUniformr:  ro   r   r<  r[   rl  r   r=  rp   )r!   r   r   r   r   r   r   r&   r   r   r[   rr   rx   r   r?  r   r@  r   r   r   r   r   rh   r   r  s          rB   !test_onnxt_runtime_random_uniform8TestReferenceEvaluator.test_onnxt_runtime_random_uniform<  s    "3(9(9D6B/2u3q!fME7CaS1&
J!*-hhtR #F+BJJ/3779a(	1%rJ   c           	      p   [        S[        R                  S /5      n[        S[        R                  S /5      n[        SS/S/SS9n[	        U/SU/U/5      n[        U5      n[        U5        [        U5      nUR                  S S[        R                  " S[        R                  S905      S	   nU R                  UR                  S5        U R                  UR                  [        R                  5        U R                  UR!                  5       S	5        U R#                  UR%                  5       S
5        g )Nr   r   RandomUniformLiker:  r;  rl  r=  rq   r   rp   r>  rA  s           rB   &test_onnxt_runtime_random_uniform_like=TestReferenceEvaluator.test_onnxt_runtime_random_uniform_likeI  s    "3(9(9D6B"3(9(9D6B-use#FE7C!qc2&
J!*-hhtc288F"**#EFGJF+BJJ/3779a(	1%rJ   c                 t   [        S[        R                  S /5      n[        S/ S/SSS/S9n[	        U/S/ U/5      n[        U5      n[        U5        [        U5      nUR                  S 0 5      S   nU R                  UR                  S	5        U R                  UR                  [        R                  5        g )
Nr   RandomNormalr:  ro   r   rF  rl  r   r=  )r!   r   r   r   r   r   r   r&   r   r   r[   rr   rx   r   rG  s          rB    test_onnxt_runtime_random_normal7TestReferenceEvaluator.test_onnxt_runtime_random_normalW  s    "3(9(9D6B."se#aVLE7CaS1&
J!*-hhtR #F+BJJ/rJ   c           	         [        S[        R                  S /5      n[        S[        R                  S /5      n[        SS/S/SS9n[	        U/SU/U/5      n[        U5      n[        U5        [        U5      nUR                  S S[        R                  " S[        R                  S905      S	   nU R                  UR                  S5        U R                  UR                  [        R                  5        g )
Nr   r   RandomNormalLiker:  r;  rl  r=  rq   r   )r!   r   r   r   r   r   r   r&   r   rx   r|   r   r   r[   rr   rA  s           rB   %test_onnxt_runtime_random_normal_like<TestReferenceEvaluator.test_onnxt_runtime_random_normal_likeb  s    "3(9(9D6B"3(9(9D6B,secUEE7C!qc2&
J!*-hhtc288F"**#EFGJF+BJJ/rJ   c                 
   [         R                  " SS9nU R                  UR                  S5        [        R
                  " SS/SS//[        R                  S9n[         R                  " USS9n[        USS9n[        XC5        g )Nr  r  r   rp   r   ro   rq   )
r-   creater   r  rx   ry   r   evalr/   r   )r   instr   r   r   s        rB   test_eval_celu%TestReferenceEvaluator.test_eval_celun  si    {{%S)HHq!fr1g&bjj9IIas#1C($rJ   c                     [         R                  " SS/SS//[         R                  S9n[        R                  " U[
        R                  S9n[        R                  " U[
        R                  S9nUn[        XC5        g )Nr   rp   r   ro   rq   to)	rx   ry   r   r,   rX  r   FLOAT8E4M3FNr   r   )r   r   r   dyr   s        rB   test_eval_cast%TestReferenceEvaluator.test_eval_castv  s\    HHq!fr1g&bjj9LL{778\\! 1 12%rJ   c                 F   [        SS5      nU R                  UR                  S5        UR                  SS9nU R                  UR                  S5        [
        R                  " SS/SS//[
        R                  S	9nUR                  USS9n[        USS9n[        XT5        g )
Nr_   r-   r  r  r   rp   r   ro   rq   )r)   r   r  rW  r  rx   ry   r   rX  r/   r   )r   celurY  r   r   r   s         rB   test_eval_celu_load_op-TestReferenceEvaluator.test_eval_celu_load_op}  s    r6",{{{%S)HHq!fr1g&bjj9IIasI#1C($rJ   c                 d    [         R                  " SS9nU R                  UR                  S5        g )Nr  r  )r.   rW  r   r  )r   rY  s     rB   test_create_adam'TestReferenceEvaluator.test_create_adam  s$    {{%S)rJ   c           	         [        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        S/ SQS// SQS	S	/S
S
/S9n[	        U/SXU/U/5      n[        U[        SS5      /S9n[        U5      nUc  g [        USS9n	U R                  U	R                  S   [        5        [        U[        /SS9n
U R                  U
R                  S   [        5        [        USS9nU R                  UR                  S   [        5        Su  p[        U5       GH\  n[        U5       GHH  n[        R                  " S	S	X4[        R                   S9nSUSSX4'   [        R                  " S[        R                   S9n[        R"                  " S
[        R$                  " S5      R'                  S5      -  S5      USSS S 2S S 24'   [        R(                  " S////[        R                   S9nUR+                  S XUS.5      S   nU	R+                  S XUS.5      S   n[-        UU5        U
R+                  S XUS.5      S   n[-        UU5        UR+                  S XUS.5      S   n[-        UU5        GMK     GM_     g )Nr   NNNNr   r   Wr2   r   rl  r   rp   rp   rp   rp   rp   ro   )r   r   r   rl  r_      r   F)	optimizedr   )r  rp  T)r   r   rq   r#  rp   rp   r   r   	   r   r      )r!   r   r   r   r   r   r   rl   r&   assertIsInstancer  r2   ConvOptimizedrz   rx   r|   r   minimumr0  r   ry   r   r   )r   r   r   r   rl  rP  r   rh   sess1sess2sess3sess4sHsWr   r   r   r  got3got4s                       rB   	test_conv TestReferenceEvaluator.test_conv  si   "3(9(9;ST"3(9(9;ST"3(9(9;ST"3(9(9;STE!fF
 D63q	A37+E,rSUBVAWX
!*-=":?eooa0$7":RWXeooa0-@":>eooa0-@rA2YHHaB^2::> #!Q*HH\< "

1		!0D0DW0M+Ms S!Q1*HHugYbjj9 99T+CDQGiiAA&>?B#.yyQQ'?@C$/yyQQ'?@C$/  rJ   c                    [        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S	[        R                  S /5      n[        S
[        R                  S /5      n	[	        S/ SQS/5      n
[        U
/SXXrXXXi/U/5      n[        U[        SS5      /S9n[        U5      nUc  g [        U5      nSu  nn[        U5       GH  n[        U5       GH|  n[        R                  " SSUU4[        R                  S9nSUSSUU4'   U R                  SUUS9   [        R                  " S[        R                  S9nSUSSS S 2S S 24'   U[        R                  " S/[        R                   S9[        R                  " S/[        R                  S9U[        R                  " S/[        R                   S9[        R                  " S/[        R                  S9[        R                  " S/[        R                   S9[        R                  " S/[        R                  5      S.nUR#                  S U5      S   nUR#                  S U5      S   n [%        UU5         S S S 5        U R                  SUUS9   [        R                  " S[        R                  S9n[        R(                  " S[        R*                  " S5      R-                  S5      -  S5      USSS S 2S S 24'   U[        R                  " S/[        R                   S9[        R                  " S/[        R                  S9U[        R                  " S/[        R                   S9[        R                  " S/[        R                  S9[        R                  " S/[        R                   S9[        R                  " S/[        R                  5      S.nUR#                  S U5      S   nUR#                  S U5      S   n[%        UU5        S S S 5        U R                  SUUS9   [        R                  " S[        R                  S9nSUSSS S 2S S 24'   U[        R                  " S/[        R                   S9[        R                  " S /[        R                  S9U[        R                  " S!/[        R                   S9[        R                  " S"/[        R                  S9[        R                  " S#/[        R                   S9[        R                  " S /[        R                  5      S.nUR#                  S U5      S   nUR#                  S U5      S   n[%        UU5        S S S 5        GM     GM     [        R                  " / S$Q/ S%Q/ S&Q/ S'Q/ S(Q/ S)Q/ S*Q/[        R                  S9R-                  S+5      n[        R                  " S/[        R                   S9n[        R                  " S /[        R                  S9n[        R                  " S/[        R                  S9R-                  S5      n[        R                  " S,/[        R                   S9n[        R                  " S"/[        R                  S9n[        R                  " S#/[        R                   S9n[        R                  " S-/[        R                  S9n	UUUUUUUU	S.nUR#                  S U5      S   nUR#                  S U5      S   n[%        UU5        g ! [&         a  nUeS nAff = f! , (       d  f       GN= f! , (       d  f       GN,= f! , (       d  f       GMb  = f).Nr   rk  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  rl  r_   ro  r   r   r   rp   rq   r#  r   1x1)r  r   r   rn  3x3rq  ro   rr  rs     g칟>n?   gO Y@   g{XZ?)r                 :   )r  ;      _      r   @   )8            r        )            r  r  r  )   '   |   M   P   f   +   )         S   )   (      )r     \      *         rp   rp   r   r   gO\?{   )r!   r   UINT8r   r   r   r   r   rl   r&   rz   rx   r|   r!  r  ry   r   r   r   r   rw  r0  r   )r   r   r  r   r  r  r  r  r  r  rP  r   rh   rx  ry  r|  r}  r   r   feedsr   r  r   s                          rB   test_qlinearconv'TestReferenceEvaluator.test_qlinearconv  s   "3(9(9;ST"3(9(9;ST"3(9(9;ST(K4E4EvN(K4E4EvN(K4E4EvN-nk>O>ORVQWX-nk>O>ORVQWX-nk>O>ORVQWX	 E
 F'WC	
 ,E,rSUBVAWX
!*-=":.BrA2YHHaB^288< #!Q1*\\EQ!\4RXX>A$%AaAqjM#%88QCrzz#B(*!BHH(E#%88QCrzz#B(*!BHH(E#%88QCrzz#B(*!bhh(?	E  %yyu5a8H))D%03C '#6! 5& \\EQ!\4RXX>A$&JJqBIIaL4H4H4Q/QSV$WAaAqjM#%88QCrzz#B(*!BHH(E#%88QCrzz#B(*!BHH(E#%88QCrzz#B(*!bhh(?	E  %yyu5a8H))D%03C#Hc2 5  \\EQ!\4RXX>A$%AaAqjM#%88]O2::#N(*#bhh(G#%88-=,>bjj#Q(*#bhh(G#%88]O2::#N(*#(A	E  %yyu5a8H))D%03C#Hc2 54M  p HH1-13//1 ((
 ',
 	
 ((M?"**=xxRXX6HHaS)11,?((M?"**=xxRXX6((M?"**=xxRXX6 (((	
 99T5)!,iie$Q'#&G *   # 54& 54  54sE   7D4^ ,^E;^2&E _
^	^	^	^  
^/2
_
_c                    [        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        SSS/S/X#US9n	[        SS/S	/5      n
[        S
SS	/S/UUUSS9n[        SS/S/5      n[        SSS/S/5      n[	        XXU/SXX/Xg/5      n[        U[        SS5      [        SS5      /S9n[	        U	/SXX/U/5      n[        U[        SS5      /S9n[        U5      n [        U5      nUc  g  Su  nn[        R                  " U5      n[        U5       GHE  n[        U5       GH1  n[        R                  " SSUU4[        R                  S9nSUSSUU4'   [        R                  " SS/UQ7[        R                  S9n[        R                   " S[        R"                  " U5      R%                  US   S45      -  S5      USSS S 2S S 24'   UR'                  S XXS.5      nUbB  UR'                  S XXS.5      S   n[)        US   R+                  5       UR+                  5       5         [)        US   R+                  5       US   R+                  5       5        GM4     GMH     g ! [         a    S n GNf = f! [,         a)  n[-        SU SU S U S!U S"US    S#US    35      UeS nAff = f)$Nr   rk  r  Y2rl  r2   r   r   r   Shaper[   Im2Colximexperimental)r   r   r   rc   Flattenwflatr   rl  r_   ro  rp   r   )r   r   rq   r#  r   ro   r   rt  )r   rl  zDiscrepancies: pads=z, dilations=z
, strides=z, kernel_shape=r  
!=
)r!   r   r   r   r   r   r   r   r&   rl   r<   rx   r}   rz   r|   r   rw  r0  r   r   r   ravelr   )r   r   r   r   r   r   r  r  rl  rP  
node_shapenode_im	node_flatnode_gemr   rh   
graph_convonnx_model_convr   	sess_convr|  r}  nkerr   r   r  ort_resr   s                               rB   common_test_im2col)TestReferenceEvaluator.common_test_im2col8  s   "3(9(9;ST#D+*;*;=UV#D+*;*;=UV"3(9(9;STS#JTi
 wy9
'NG!
 i#	:	X'7$@w8<FH	
  ,r2"6^UV8W!X

  aVbT:
0|B';&<
 "*-	)/:I  !
 Bww|$rA2YHHaB^2::> #!Q1*HH)L)** !#

400,q/21FGG!!Q1* hht1%56('mmD2BCAFG#CFLLNGMMOD#CFLLNCFLLNC!    	I	. & (.tfL:V]U^ _((4~SVHF3q6(4 	s*   *J+ 2.J>+J;:J;>
K1$K,,K1c                 4    U R                  S/ SQSS/SS/S9  g )Nrp   rp   rp   rp   rp   ro   rp   r  r  r   s    rB   test_im2col_1x1&TestReferenceEvaluator.test_im2col_1x1}  &    1v!Q 	  	
rJ   c                 4    U R                  S/ SQSS/SS/S9  g )Nrm  r  rp   r  r  r  s    rB   test_im2col_2x2&TestReferenceEvaluator.test_im2col_2x2  r  rJ   c                 4    U R                  S/ SQSS/SS/S9  g )Nr  r  rp   r  r  r  s    rB   test_im2col_3x3&TestReferenceEvaluator.test_im2col_3x3  r  rJ   c                 4    U R                  S/ SQSS/SS/S9  g )Nr  )r   rp   ro   r   rp   r  r  r  s    rB   test_im2col_3x3_pads+TestReferenceEvaluator.test_im2col_3x3_pads  r  rJ   c                 4    U R                  S/ SQSS/SS/S9  g )Nr  )r   rp   rp   rp   rp   ro   r  r  r  s    rB   test_im2col_3x3_strides.TestReferenceEvaluator.test_im2col_3x3_strides  r  rJ   c                 4    U R                  S/ SQSS/SS/S9  g )Nr   r   r  rp   r  r  r  s    rB   test_im2col_5x5&TestReferenceEvaluator.test_im2col_5x5  r  rJ   c           	         SS K n[        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S/ SQS// S	QS
S
/S
S
/S9n[        U/SX$U/U/5      n[        U[        SS5      /S9n[        U5      n	[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ//5      R                  [        R                  5      n[        R                  " SS/5      R                  [        R                  5      n
[        R                  " S
S/5      R                  [        R                  5      nUR                  R!                  [#        U
5      US9nU	R%                  S X+U
S.5      nU" UR'                  U5      5      R)                  5       n[+        XS   5        g )Nr   r   NNNr   Ir   Col2Imr   r  r   r   r   r   r   rp   r  rl  r_   ro  r   )r#        @      &@      0@      5@)r$        @      (@      1@      6@)r%         @      *@g      2@      7@)r&        "@      ,@      3@      8@)r'  r:        .@g      4@g      9@r   )output_sizer   r   r   r  )rM   r!   r   r   r?  r   r   r   r   r&   rx   ry   r1  r   r@  nnFoldrs   r   
from_numpynumpyr   )r   rM   r   r   ISBSrP  r   rh   r   image_shapeblock_shapefoldr  r  s                  rB   test_col2im"TestReferenceEvaluator.test_col2im  s   "3(9(9;MN"3(9(9;MN#C):):TFC#C):):TFCEF!f
 D63aS9l2r6J5KL
!*-HH 10000

 &
 	
 hh1v&--bhh7hh1v&--bhh7xx}}{);}Uhht1[IJe&&q)*002A'rJ   c           	         SS K n[        S[        R                  / SQ5      n[        S[        R                  / SQ5      n	[        S[        R                  S /5      n
[        S[        R                  S /5      n[        S/ SQS/UUUS	9n[        U/S
XU/U	/5      n[        U[        SS5      /S9n[        U5      nUR                  R                  [        U5      [        U5      [        U5      [        U5      [        U5      S9n[        R                  " U5      n[!        U5       H  n[!        U5       H  n[        R"                  " SUU4[        R$                  S9nSUSUU4'   [        R&                  " U[        R(                  S9n[        R&                  " U[        R(                  S9nU" UR+                  U5      5      R-                  5       nUR/                  S UUUS.5      n[1        UUS   5        M     M     g )Nr   r   r  r   r  r   r  r  r  rl  r_   ro  r   )r  r   dilationpaddingstriderp   rq   r#  r  )rM   r!   r   r   r?  r   r   r   r   r&   r  r  rs   r   rx   r}   rz   r|   r   ry   r@  r  r	  r   r   )r   sizer  r  r   r   r   rM   r   r   r
  r  rP  r   rh   r   r  r  r   r   i_shapeb_shaper  r  s                           rB   common_test_col2im)TestReferenceEvaluator.common_test_col2im  s    	"3(9(9;MN"3(9(9;MN#C):):TFC#C):):TFCE
 D63aS9l2r6J5KL
!*-xx}}k*k*9%I>  
 ww{#tA4[HHat_BJJ? !Q'
((;bhh?((;bhh?e..q1288:hht17%IJ  A/ ! rJ   c           	      8    U R                  SSS/ SQSS/SS/S9  g )Nr   r   r   ro   r   r  rp   r  r  r  s    rB   test_col2im_2x3&TestReferenceEvaluator.test_col2im_2x3  +    \Aq6aQRV 	  	
rJ   c           	      8    U R                  SSS/ SQSS/SS/S9  g )N   r  r  rn  rp   r  r  r  s    rB   test_col2im_2x3_pads+TestReferenceEvaluator.test_col2im_2x3_pads  r   rJ   c                 n   [         R                  " SS/[         R                  S9nSUS   S'   [         R                  " SS/5      S[         R                  " SS/5      [         R                  " / S	Q5      [         R                  " SS/5      4u  p#pEn[	        XX4XV5      n[        XX4XV5      n[        Xx5        g )
Nr   r"  rq   r#  r   r   r  rp   rn  )rx   r|   r   ry   r0   r1   r   )	r   r~   r  r   r   r   r  r1r2s	            rB   test_col2im_2d%TestReferenceEvaluator.test_col2im_2d  s    xxBrzz2Q
HHaVHHaVHH\"HHaV>
:9F -|
 )|
 	rJ   c                    [        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        S[        R                  S/5      n[        S[        R                  / SQ5      n[        S/ S	QS/SS
S
/SS// SQS
S
/S9n[	        U/SXU/U/5      n[        U[        SS5      /S9n[        R                  " S5      R                  S5      R                  [        R                  5      [        R                  " / SQ/ SQ/ SQ/// SQ/ SQ/ SQ/// SQ/ SQ/ SQ/// SQ/ SQ/ SQ///[        R                  S9[        R                  " / S Q[        R                  S9S	.nS!US   S S & US   nUS   nUS   n[        R                  " SUR                  S9n[        UR                   S!   5       Hs  n	[        S5       Ha  n
XU	S
-   2XS
-   24   nX*   n[#        US"S
S
// SQS
S
/5      n[        R$                  " XR'                  5       5      nXU
   -   nXXS S 2S S 24'   Mc     Mu     [)        U5      nUR+                  S U5      n[-        UUS!   S#S$9  g )%Nr   )ro   r   r   r   rl  )r   rp   r   r   r   r   r   r2   rm  rp   r   rn  groupr   r   r   r   rl  r_   ro  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   `Ζrq   )g   @[¿g   &g   (g   `䠾r   r  h㈵>atol)r!   r   r   r   r   r   r   rx   r0  r   r1  r   ry   r   rr   rz   r[   r   matmulr(  r&   r   r   )r   r   rl  r   r   rP  r   rh   r  r   rl  r   r  c2mulref1got1s                    rB   test_conv_im2col_group4.TestReferenceEvaluator.test_conv_im2col_group4  s   "3(9(9<H"3(9(9<H"3(9(9A3?"3(9(9<HE!fQF	
 D63q	A37l2r6J5KL
 =)11,?FFrzzR

*

*

*

uM\ jj_Pb  jjg\
z c
1 #J#J#JHH\1qwwqz"A1X!a%iU*+DAv1v|aVDiiIIK0aDj #!1*  # "*-xxe$47.rJ   c                 Z   [        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        S[        R                  S/5      n[        S[        R                  / SQ5      n[        S	/ S
QS/SSS/SS// SQSS/S9n[	        U/SXU/U/5      n[        U[        SS5      /S9n[        R                  " S5      R                  S5      R                  [        R                  5      S-   [        R                  " S[        R                  S9[        R                  " S[        R                  S9S
.nSUS   S'   [        U5      n	U	R                  S U5      n
[        R                  " / SQ/ SQ/ SQ// SQ/ SQ/ SQ///[        R                  S9n[!        XS   5        g )Nr   rp   r   r   r   rl  ro   r   r   r   r   ro   r   rk  r2   rm  rp   r   rn  r+  rl  r_   ro  r   l   rq   ro   )r   r   r   rp   )r:  r:  r:  )r  r  r  )r  r  r  r   )r!   r   r   r   r   r   r   rx   r0  r   r1  r   r|   r&   r   ry   r   r   r   rl  r   r   rP  r   rh   r  r3  r4  r   s               rB   test_conv_strides(TestReferenceEvaluator.test_conv_strides  s   "3(9(9<H"3(9(9<H"3(9(9A3?"3(9(9;STE!fQF	
 D63q	A37l2r6J5KL
 =)11,?FFrzzRUVV,bjj9$bjj1

 "#c
:!*-xxe$88 %&68JK$oG **
 	q'*rJ   c           	      <   [        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        SS/S/SS// SQSS/S9n[	        U/S	U/U/5      n[        U[        S
S5      /S9nS[        R                  " S5      S S S2   R                  S5      R                  [        R                  5      0n[        R                  " / SQ/ SQ/ SQ/ SQ///[        R                  S9n[        U5      nUR                  S U5      n	[        XyS   5        g )Nr   rk  r   MaxPoolr   rn  ro   r   r   r   rl  r_   ro  r   1   r   r  )g      H@g     G@g     F@g     E@)g     D@g      D@g      C@g      B@)g      ;@g      :@r  r  )r  r        $@r  rq   r   r!   r   r   r   r   r   r   rx   r0  r   r1  r   ry   r&   r   r   
r   r   r   rP  r   rh   r  r   r3  r4  s
             rB   test_max_pool_2d_1)TestReferenceEvaluator.test_max_pool_2d_1  s   "3(9(9;ST"3(9(9;STEEQF
 D63aS1l2r6J5KL
biimDbD)11,?FFrzzRS88 100/		 **
 "*-xxe$q'*rJ   c                     [        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        SS/S/SS// SQSS/S9n[	        U/S	U/U/5      n[        U[        S
S5      /S9nS[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ///[        R                  S90n[        R                  " / SQ/ SQ/ SQ/ SQ///[        R                  S9n[        U5      nUR                  S U5      n	[        XyS   5        g )Nr   rk  r   r@  r   rn  ro   rA  rl  r_   ro  r   )i  if  i  iB  i  i     )i  i  i  r      r  iF  )iB  B   i  ix  iT  i  i  )o   i  is  iL  i  iJ  i  )i  4   i  Q   i'  i;  ih  )  i>  rN  i  i  i  i  )i|  i  K   iA  rO  i  i  rq   )g     X@g     @     @rQ  )g     8@g     x@g     @     P@)     `@g     @rR  rR  )rS  g     @rS  g      @r   )r!   r   r   r   r   r   r   rx   ry   r   r&   r   r   rE  s
             rB   test_max_pool_2d_2)TestReferenceEvaluator.test_max_pool_2d_2  s'   "3(9(9;ST"3(9(9;STEEQF
 D63aS1l2r6J5KL
  @=>?=>>
 jj
$ 88 5444		 **
 "*-xxe$q'*rJ   c                    [        S[        R                  S S /5      n[        S[        R                  S S /5      n[        S[        R                  S S /5      n[        S[        R                  S S /5      n[	        S/ SQS/SSS	9n[        U/S
XU/U/5      n[        U[        SS5      /S9n[        R                  " / SQ/[        R                  S9[        R                  " SS//5      [        R                  " SS//[        R                  S9S.n[        U5      n	U	R                  S U5      n
[        R                  " / SQ/[        R                  S9n[        XS   5        g )Nr   r  Ur   ScatterElementsr   r  rW  rp   r   )r.  	reductionrl  r_   ro  r   )r#  r$  r%  r&  r'  rq   皙?g @)r#  r[  r%  r&  r'  r   r!   r   r   r?  r   r   r   r   rx   ry   r   r&   r   r   r   r   IndrW  r   rP  r   rh   r  r3  r4  r   s               rB   test_scatter_elements,TestReferenceEvaluator.test_scatter_elements  s4   "3(9(9D$<H$S+*;*;dD\J"3(9(9D$<H"3(9(9D$<HE
 D63aS9l2r6J5KL
45RZZHAq6(#C:,bjj9
 "*-xxe$8867rzzJq'*rJ   c                    [        S[        R                  S S /5      n[        S[        R                  S S /5      n[        S[        R                  S /5      n[        S[        R                  S S /5      n[	        S/ SQS/5      n[        U/SXU/U/5      n[        U[        SS	5      /S
9n[        R                  " SS//[        R                  S9[        R                  " SS//5      [        R                  " S/[        R                  S9S.n[        U5      n	U	R                  S U5      n
[        R                  " SS//[        R                  S9n[        XS   5        g )Nr   r  rW  r   	ScatterNDrY  rl  r_   ro  r   r#  r$  rq   r   r%  r\  r]  s               rB   test_scatternd%TestReferenceEvaluator.test_scatternd'  s,   "3(9(9D$<H$S+*;*;dD\J"3(9(9D6B"3(9(9D$<HE

 D63aS9l2r6J5KL
C:,bjj9Aq6(#3%rzz2
 "*-xxe$88c3ZL

;q'*rJ   c                   ^  SS jm SU4S jjn[        S[        R                  / SQ5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  / S	Q5      n[	        S
/ SQS// SQS9n[        U/SX#U/U/5      n[        U[        SS5      /S9n[        R                  " S5      R                  [        R                  5      R                  S5      [        R                  " SS/5      [        R                  " SS/5      S.n	[        U5      n
U
R                  S U	5      nU" U	S   SSS/ SQS9n[!        XS   5        g )Nrp   c                 v   U u  pVpxAXsS   -   US   -   U-
  U-  S:X  d   eXS   -   US   -   U-
  U-  S:X  d   eXsS   -   US   -   U-
  U-  S-   n	XS   -   US   -   U-
  U-  S-   n
[         R                  " [         R                  " U5      U5      n[         R                  " X5      nU[         R                  " [         R                  " U	5      U
5      -  n[         R                  " [         R                  " U5      X-  5      nU[         R                  " [         R                  " U
5      U	5      -  nUR	                  SS5      UR	                  SS5      -   nUR	                  SS5      UR	                  SS5      -   n[         R                  " [         R                  " U5      X-  5      R	                  SS5      nUUU4$ )Nr   ro   rp   r   r   )rx   repeatr0  tiler   )x_shapefield_heightfield_widthr  r  Nr{  Hrl  
out_height	out_widthi0i1j0j1r   r   ks                     rB   get_im2col_indicesCTestReferenceEvaluator.test_col2im_impl.<locals>.get_im2col_indices@  s    !JA!
NWQZ/,>&HAMMM
NWQZ/,>&HAMMMaj.71:5DORSSJQZ'!*4{BvMPQQI299\2K@BB"))BIIj$99EEB;/1ABB"''"))I"6
CCB

2q!BJJq"$55A

2q!BJJq"$55A		"))A,(BCKKBPQRAq!9rJ   c                   > Uu  pgpXS   -   US   -   XS   -   US   -   p[         R                  " XgX4U R                  S9nT" XX4U5      u  pnU R                  Xr-  U-  SU5      nUR	                  SSS5      n[         R
                  R                  U[        S 5      XU4U5        UR                  5       nUS   S:X  a  US==   UR                  S   -  ss'   OUS   S:  a  US==   S-  ss'   US   S:X  a  US==   UR                  S   -  ss'   OUS   S:  a  US==   S-  ss'   US S 2S S 2US   US   2US   US   24   nU$ )Nr   ro   rp   r   rq   r   )
rx   r|   rr   r   	transposeaddatslicecopyr[   )colsri  rj  rk  r  r  rl  r{  rm  rl  H_paddedW_paddedx_paddedrt  r   r   cols_reshapedr   ru  s                     rB   col2im_indices?TestReferenceEvaluator.test_col2im_impl.<locals>.col2im_indicesW  si    !JA!AJ+AJ+  xxx :$**MH({VGA! !LL)9K)GQOM)33Aq!<MFFIIhtaA 6FllnGqzQ
hnnQ//
a
b 
qzQ
hnnQ//
a
b 
1agaj!8'!*wqz:QQRCJrJ   r   r  r
  r  r   rk  r  )r   r
  r  )r   rp   r   rp   )r   rl  r_   ro  r   rP  )rp   r   r  r   )rp   rp   r   r   )rj  rk  r  r   r  )r   r   Nrp   )r!   r   r   r?  r   r   r   r   rx   r0  r1  r   r   ry   r&   r   r   )r   r  r   r
  r  r   rP  r   rh   r  r3  r4  r   ru  s                @rB   test_col2im_impl'TestReferenceEvaluator.test_col2im_impl?  sD   EF	0 PQ	8 #3(9(9;MN#D+*;*;dVD#D+*;*;dVD"3(9(9;ST#4se,OD63aS9l2r6J5KL
6"))"**5==jI((Aq6"((Aq6"
 "*-xxe$!#J 
 	q'*rJ   c                 j   [        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        S[        R                  S /5      n[        S[        R                  / SQ5      n[        S/ SQS/SS/S	S	/S
S
// SQSS/S9n[	        U/SXU/U/5      n[        U[        SS5      /S9n[        R                  " S5      R                  S5      R                  [        R                  5      [        R                  " S5      R                  S5      R                  [        R                  5      [        R                  " / SQ[        R                  S9S.n[        U5      n	U	R                  S U5      n
[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ///[        R                  S9n[        XS
   5        US==   S
-  ss'   SUS   S'   [        U5      n	U	R                  S U5      n
[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ///[        R                  S9n[        XS
   5        g )Nr   rk  rl  r   r   ConvTransposerm  rp   r   r   rn  )r   r   output_paddingr   r   rl  r_   ro  r   r+  )rp   r   r   r      )r   rp   r   r   r  rq   )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   rD  r<  s               rB   test_conv_transpose_2d-TestReferenceEvaluator.test_conv_transpose_2d  s   "3(9(9;ST"3(9(9;ST"3(9(9D6B"3(9(9;STE!fQq6F	
 D63q	A37l2r6J5KL
=)11,?FFrzzR=)11,?FFrzzR,bjj9
 "*-xxe$88 12232
 **
 	q'*c
a
!"c
:!*-xxe$88 %$$$$
 **
 	q'*rJ   c           
         [        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        S[        R                  S /5      n[        S[        R                  / SQ5      n[        S/ SQS/SS	S	/S
9n[	        U/SXU/U/5      n[        U[        SS5      /S9n[        R                  " S5      R                  S5      R                  [        R                  5      [        R                  " S5      R                  S5      R                  [        R                  5      [        R                  " / SQ[        R                  S9S.n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ/ SQ/ S Q///[        R                  S9n	[        U5      n
U
R                  S U5      n[        XS!   5        g )"Nr   rk  rl  r   r   r  rm  
SAME_UPPERro   )auto_padr   rl  r_   ro  r   rr  rq  rV  )rp   ro   r   r   r  rq   )r   r   r   rp   ro   ro   )r   r   r   r   r   r  )r   r   r  r   r"     )rr  r  r  ro  #      )rV  r  r+  r  L   r  )rV     3   r"  r      )r   r   rr  r      r  )r   r   r  r<  &      )r     T   r     R   )$   r  Z   rM  t   A   )c   r:  rJ  r  i$     )H   N   r  [      h   r   rD  )r   r   rl  r   r   rP  r   rh   r  r   r3  r4  s               rB   test_conv_transpose_2d_upper3TestReferenceEvaluator.test_conv_transpose_2d_upper  s   "3(9(9;ST"3(9(9;ST"3(9(9D6B"3(9(9;STE!F
 D63q	A37l2r6J5KL
=)11,?FFrzzR=)11,?FFrzzR,bjj9
 88 ++./00 ..1153( **+
8 "*-xxe$q'*rJ   z1.21.5z+op_dft and op_stft requires numpy >= 1.21.5c                    [        S[        R                  / SQ5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  / SQ5      n[	        S/ SQS/5      n[        U/S	XU/U/5      n[        U[        S
S5      /S9n[        R                  " S5      R                  S5      R                  [        R                  5      [        R                  " S[        R                  S9[        R                  " S[        R                  S9S.nUS   n[        US   5      n[        US   5      nUS-  S-   n	US   R                   S   U-
  U-  S-   n
[        R"                  " SXS/[        R                  S9n[%        U
5       Hi  nX-  nX-  U-   n[        R&                  R'                  USX2S4   5      nUSU	 n[        R(                  " UR*                  UR,                  4SS9USU4'   Mk     [/        U5      nUR1                  S U5      n[3        UUS   5        g )Nsignalr  
frame_stepframe_lengthr   rk  STFT)r  r  r_   r  rl  r_      r   r  rp   r  rp   r  rq   ro  )r  r  r  ro   rp   r   r.  )r!   r   r   r?  r   r   r   r   rx   r0  r   r1  r   ry   r@  rX   r[   r   rz   fftstackrealimagr&   r   r   )r   r  r  r  r   rP  r   rh   r  onesided_lengthnstftsr   r   startstopcomplex_outc_outr3  r4  s                      rB   	test_stft TestReferenceEvaluator.test_stft	  s   
 (+2C2CEWX+L+:K:KdVT
-nk>O>ORVQWX"3(9(9;ST8E

 D63\(JQCPl2r6J5KL
iin,,[9@@L((1BHH5HHRrxx8
 x501|,-
'1,1?((+l:zIQN88Q;2::NvANE>L0D&&**VAuz1,<%=>K/2EXXuzz5::&>QGHQTN & "*-xxe$$q'*rJ   c                    [        S[        R                  / SQ5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  / SQ5      n[	        S/ S	QS/5      n[        U/S
XX4/U/5      n[        U[        SS5      /S9n[        R                  " S5      R                  S5      R                  [        R                  5      [        R                  " S[        R                  S9SS[        R                  " S[        R                   -  [        R                  " SSS[        R                  S9-  S-  5      -  -   [        R                  " S[        R                  S9S	.n	U	S   n[#        U	S   5      nU	S   n[#        U	S   5      nUS-  S-   n
SUR$                  S   UR$                  S   -
  S-  -   n[        R&                  " SXS/[        R                  S9n[)        U5       Ho  nX-  nX-  U-   n[        R*                  R+                  USX2S4   U-  5      SU
 nUSU
 n[        R,                  " UR.                  UR0                  4SS9USU4'   Mq     [3        U5      nUR5                  S U	5      n[7        UUS   5        g )Nr  r  r  windowr  r   rk  r  )r  r  r  r  rl  r_   r  r   r  r  r  rq   r  ro   r   ro  rp   r  )r!   r   r   r?  r   r   r   r   rx   r0  r   r1  r   ry   r@  cospirX   r[   r   rz   r  r  r  r  r&   r   r   )r   r  r  r  r  r   rP  r   rh   r  r  r  r   r   r  r  r  r  r3  r4  s                       rB   test_stft_with_window,TestReferenceEvaluator.test_stft_with_window<	  sv   
 (+2C2CEWX+L+:K:KdVT
'+2C2CdVL-nk>O>ORVQWX"3(9(9;ST>E

 D63V(RUVTWXl2r6J5KL
iin,,[9@@L((1BHH5BFF1ruu9ryyB'LLrQRRSHHRrxx8
 x501x|,-
'1,1fll1oQ7A==88Q;2::NvANE>L0D&&**VAuz1,<%=%FG/K  /2EXXuzz5::&>QGHQTN & "*-xxe$$q'*rJ   c                 ^   [        S[        R                  / SQ5      n[        S[        R                  S S /5      n[        S[        R                  / SQ5      n[        S[        R                  S /5      n[	        S/ SQS/SSS	S
SUS9	n[        U/SX#U/U/5      n[        U[        SS5      /S9$ )Nr   rk  roisr   r  RoiAlignr   r  r  r   ro   r#  output_half_pixel)output_heightoutput_widthsampling_ratiospatial_scalecoordinate_transformation_modemoderl  r_   r  r   )r!   r   r   r?  r   r   r   r   )r   r  r   r  r   r
  rP  r   s           rB   get_roi_align_model*TestReferenceEvaluator.get_roi_align_modelu	  s    "3(9(9;ST%fk.?.?$N"3(9(9;ST#C):):TFCE+>

 D63"s;%eLR<P;QRRrJ   c                     U R                  U5      n[        5       u  p4nX5US.n[        U5      nUc  g UR                  S U5      n[	        U5      n	U	R                  S U5      n
[        US   U
S   SS9  g )Nr  r   r-  r.  )r  r   rl   r   r&   r   )r   r  rh   r   batch_indicesr  r  r   r   refr  s              rB   common_test_roi_align,TestReferenceEvaluator.common_test_roi_align	  sy    --d3
!;!=$M: ,<88D%( ,ggdE"SV$7rJ   c                     U R                  SS9   U R                  S5        S S S 5        U R                  SS9   U R                  S5        S S S 5        g ! , (       d  f       N8= f! , (       d  f       g = f)Navgr  r   )r  r  r  s    rB   test_roi_align%TestReferenceEvaluator.test_roi_align	  s[    \\u\%&&u- & \\u\%&&u- &% &% &%s   AA%
A"%
A3c                    SS K nSSKJn  U R                  U5      n[	        U5      n[        5       u  pgnUR                  S XhUS.5      n	U" SSSS9n
U
" UR                  U5      UR                  U5      /5      n[        XS   SS	9  g )
Nr   )RoIAlignr  r  r#  ro   )r  r  r-  r.  )	rM   torchvision.opsr  r  r&   r   r   r  r   )r   r  rM   r  rh   r   r   r  r  r  r   r   s               rB   common_test_roi_align_torch2TestReferenceEvaluator.common_test_roi_align_torch	  s    ,--d3
!*-!;!=$hht1GHV3qAU%%a(5+;+;D+A*BCa&t4rJ   c                 x    U R                  SS9   U R                  S5        S S S 5        g ! , (       d  f       g = f)Nr  r  )r  r  r  s    rB   test_roi_align_torch+TestReferenceEvaluator.test_roi_align_torch	  s,     \\u\%,,U3 &%%s   +
9c           	         [        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        SS// SQSS	9n[	        U/S
U/X#XE/5      n[        U[        SS5      /S9nS[        R                  " S5      R                  [        R                  5      0n	[        R                  " / SQ[        R                  S9[        R                  " / SQ[        R                  S9[        R                  " / SQ[        R                  S9[        R                  " S/[        R                  S9/n
[        U5      nUR                  S U	5      n[        S5       H  n[        X   X   5        M     g Nr   r  r  Y3Y4Splitr  r  r  r  r   )num_outputsrl  r_   rV  r   r   r   rp   ro   rq   r,  )r   r   r  rr  r!   r   r   r   r   r   r   rx   r0  r1  r   ry   r&   r   rz   r   r   r   r  r  r  r  rP  r   rh   r  r   r3  r4  r   s                 rB   
test_split!TestReferenceEvaluator.test_split	  s^   "3(9(9D6B#D+*;*;dVD#D+*;*;dVD#D+*;*;dVD#D+*;*;dVD3%)AqQD63bb-=>l2r6J5KL
biim**2::67 HHYbjj1HHYbjj1HHYbjj1HHaS

+	
 "*-xxe$qAHK1 rJ   c           	         [        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        SSS// SQ5      n[	        U/S	U/X#XE/5      n[        U[        S
S5      /S9n[        R                  " S5      R                  [        R                  5      [        R                  " / SQ[        R                  S9S.n	[        R                  " / SQ[        R                  S9[        R                  " / SQ[        R                  S9[        R                  " SS/[        R                  S9[        R                  " SS/[        R                  S9/n
[        U5      nUR                  S U	5      n[        S5       H  n[!        X   X   5        M     g )Nr   r  r  r  r  r  splitr  rl  r_   rV  r   r   )r   r   ro   ro   rq   )r   r  r  r,  r   r   r  rr  r   )r!   r   r   r   r   r   r   rx   r0  r1  r   ry   r@  r&   r   rz   r   r  s                 rB   test_split_2#TestReferenceEvaluator.test_split_2	  sv   "3(9(9D6B#D+*;*;dVD#D+*;*;dVD#D+*;*;dVD#D+*;*;dVD3.2JKD63bb-=>l2r6J5KL
2%%bjj1XXl"((;
 HHYbjj1HHYbjj1HHaV2::.HHaV2::.	
 "*-xxe$qAHK1 rJ   c           	         [        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        SS// SQSS	9n[	        U/S
U/X#XE/5      n[        U[        SS5      /S9nS[        R                  " S5      R                  [        R                  5      0n	[        R                  " / SQ[        R                  S9[        R                  " / SQ[        R                  S9[        R                  " / SQ[        R                  S9[        R                  " S/[        R                  S9/n
[        U5      nUR                  S U	5      n[        S5       H  n[        X   X   5        M     S[        R                  " S5      R                  [        R                  5      0n	[        R                  " / SQ[        R                  S9[        R                  " / SQ[        R                  S9[        R                  " / SQ[        R                  S9[        R                  " / [        R                  S9/n
[        U5      nUR                  S U	5      n[        S5       H  n[        X   X   5        M     g r  r  r  s                 rB   test_split_num_outputs_4/TestReferenceEvaluator.test_split_num_outputs_4	  s   "3(9(9D6B#D+*;*;dVD#D+*;*;dVD#D+*;*;dVD#D+*;*;dVD3%)AqQD63bb-=>l2r6J5KL
 biim**2::67HHYbjj1HHYbjj1HHYbjj1HHaS

+	
 "*-xxe$qAHK1  biil))"**56HHYbjj1HHYbjj1HHYbjj1HHRrzz*	
 "*-xxe$qAHK1 rJ   c                 j   [        S[        R                  S S /5      n[        S[        R                  S /5      n[	        SS/S/SS9n[        U/SU/U/5      n[        U[        SS5      /S	9nS[        R                  " S
5      R                  S5      R                  [        R                  5      0n[        U5      nUR                  S U5      n[        R                  " / SQ[        R                   S9R                  S5      n	U R#                  U	R%                  5       US   R%                  5       5        g )Nr   r   ArgMinrp   r  rl  r_   rV  r   r  r   r   )r   r   r   rq   r   rp   r   r!   r   r   r?  r   r   r   r   rx   r0  r   r1  r   r&   r   ry   r@  r   tolist
r   r   r   rP  r   rh   r  r3  r4  r   s
             rB   test_argmin"TestReferenceEvaluator.test_argmin
      "3(9(9D$<H"3(9(9D6BC53%a8D63aS1l2r6J5KL
biim++F3::2::FG!*-xxe$88IRXX6>>wG*DGNN,<=rJ   c                 j   [        S[        R                  S S /5      n[        S[        R                  S /5      n[	        SS/S/SS9n[        U/SU/U/5      n[        U[        SS5      /S	9nS[        R                  " S
5      R                  S5      R                  [        R                  5      0n[        U5      nUR                  S U5      n[        R                  " / SQ[        R                   S9R                  S5      n	U R#                  U	R%                  5       US   R%                  5       5        g )Nr   r   ArgMaxrp   r  rl  r_   rV  r   r  r  r   r   r   rq   r  r   r  r  s
             rB   test_argmax"TestReferenceEvaluator.test_argmax
  r   rJ   c                    [        S[        R                  S S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[	        S/ SQS/5      [	        S	SS/S/5      /n[        US
XX4/U/5      n[        U[        SS5      /S9n[        R                  " S//[        R                  S9[        R                  " S/[        R                  S9[        R                  " S/[        R                  S9[        R                  " S/[        R                  S9S.n	[        U5      n
U
R                  S U	5      n[        R                  " S/[        R                  S9nU R                  UR                  5       US   R                  5       5        g )Nr   startsendsr(  r   r  )r   r  r  r(  TSqueezerl  r_   rV  r   r   rq   rp   r!   r   r   r?  r   r   r   r   rx   ry   r@  r&   r   r   r  )r   r   r  r  r(  r   r  r   rh   r  r3  r4  r   s                rB   test_slice_squeeze)TestReferenceEvaluator.test_slice_squeeze$
  sv   "3(9(9D$<H'+2C2CdVL%fk.?.?$H%fk.?.?$H"3(9(9D6Bg>Fi#v6
 5#4'>Dl2r6J5KL
A3%rxx0hhs"((3HHaS1HHaS1	
 "*-xxe$88QCrxx0*DGNN,<=rJ   c           	      6   [        S[        R                  S S /5      n[        S[        R                  S /5      n[	        SS/S/S/S/S/S9[	        SS/S/S/S	9/n[        US
U/U/5      n[        U[        SS5      /S9nS[        R                  " S//[        R                  S90n[        U5      nUR                  S U5      n[        R                  " S/[        R                  S9n	U R                  U	R                  5       US   R                  5       5        g )Nr   r   r  r	  r   rp   )r(  r  r  r
  )r(  rl  r_   r   r   rq   r  )
r   r   r   r  r   rh   r  r3  r4  r   s
             rB   test_slice_squeeze_6+TestReferenceEvaluator.test_slice_squeeze_6;
  s   "3(9(9D$<H"3(9(9D6Bguse1#qcLi#QC8
 5#sQC0l2q6I5JK
bhhuBHH56!*-xxe$88QCrxx0*DGNN,<=rJ   c           	         [        S[        R                  S S /5      n[        S[        R                  S S /5      n[        SS/S/5      n[	        U/SU/U/5      n[        U[        SS5      /S9n[        U5        [        U5      nUR                  S   nU R                  UR                  R                  S	5        UR                  S S[        R                  " S
[        R                   S905      S   nU R                  UR"                  S5        U R                  US   S5        [        U[        SS5      /S9n[        U5        [        U5      nUR                  S   nU R                  UR                  R                  S5        UR                  S S[        R                  " S
[        R                   S905      S   nU R                  UR"                  S5        U R                  US   S5        g )Nr   r   
ReduceMeanrl  r_   r  r   r   ReduceMean_1r=  rq   r  r   r   rp   rV  ReduceMean_18)r!   r   r   r   r   r   r   r   r&   r  r   r  r  r   rx   onesr   r[   )	r   r   r   r   r   rh   r   clsr  s	            rB   test_onnxrt_reduce_mean.TestReferenceEvaluator.test_onnxrt_reduce_meanJ
  s   "3(9(9D$<H"3(9(9D$<H,u5E7C!qc2l2r6J5KL
J!*-nnQ//@hhtc2776#DEFqIF+TA&l2r6J5KL
J!*-nnQ//Ahhtc2776#DEFqIF+TA&rJ   r7  c                    / n[        S[        R                  S S/5      [        S[        R                  S /5      /n[        S[        R                  S S /5      [        S[        R                  S /5      /nU S:  aL  UR                  [	        [
        R                  " S/[
        R                  S9S	S
95        [        USS	/S/SSS9nO[        US/S/SS/SS9n[        SS/S/SS
9[        SSS/S/SS
9U[        SS/S/SS
9/n[        USX4U5      n/ n/ SQnUR                  [	        [
        R                  " U[
        R                  S9R                  S5      SS
95        UR                  [	        [
        R                  " S/[
        R                  S9SS
95        [        S[        R                  S S/5      /n[        S[        R                  S S/5      [        S[        R                  S S/5      /n[        SSS/S S!/S"USS#9[        S$S!/S%/S&SS/S'9[        S(S%/S)/S*S
9[        S+S)S/SS/S,SSS-9/n[        US.X4U5      n[        U[        S/U 5      /S09n	U	$ )1Nnext_inr   nextnext_outscan_outrV  rp   rq   axis_redr   cdistdf_17_C0cdistdf_17_reduced0cdistdf_17_ReduceSumSquarer   )rY   r)  )rY   r(  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_Scancstro   
To_TopKcstr  valuesindicesScanUU032UUUU033UUSc_Scan)rY   r  num_scan_inputs	TransposeTr_transposed0Tr_Transpose)rY   permSqrtSq_Y0Sq_SqrtTopKTo_TopK)rY   largestsorteddummyr_   r   )r!   r   r   rN  r%   rx   ry   r@  r   r   r   r   r?  r   r   )
rk   	reduce_opinitializersr   r  node_reducer  r   
list_valuerh   s
             rB   _cdist_model#TestReferenceEvaluator._cdist_modelb
  s     #9k.?.?$K"6;+<+<tfE
 #:{/@/@4,O":{/@/@4&I

 B;288QCrxx8zJ $ *-&'1K $ !&'1SK j9+
|BVW	6*_,=DT &'*	
 5.&<P Q

d 	2::6>>wG!	
 	rxx2884<H	
 )+2C2CdAYOP"8[->->q	J"9k.?.?$K
 ,'I& ! !"#V f/07))L,'9%#
6 5'6LI  l2u6M5NO
rJ   r  g]l,@g.s,&2@rq   ro   r  r   r   ReduceL1gQ@gK-J3@g%s}N@gZOc10@rV  r   r<  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  rk   c                    Uu  p4[         R                  " S5      R                  S5      R                  [         R                  5      n0 nU R                  X#5      n[        U5      nUR                  S SU05      n	XSU4'   UR                  S   R                  R                   V
s/ s H1  n
U
R                  R                  R                  U5      (       d  M/  U
PM3     nn
US   R                  n[        X;S   R                  4SU05      n[        X}/S9nUR                  S SU05      n	XSU4'   S	nUR                  5        H  u  nn[!        [#        U5      [#        U5      5       H  u  nnUR$                  UR$                  :w  a0  ['        S
U< SU SUR$                   SU SUR$                   S35      e[         R(                  " UU-
  5      R+                  5       nUS:  d  M  ['        SU SU< SU SU SU SU 35      e   M     g s  sn
f )Nr  )r   r   r  r  r   	op_schemar  ref_clconstantzShape mismatch for z, :z != rn   gư>zDiscrepancies (max=z) for r  r  )rx   r0  r   r1  r   rA  r&   r   r  r  r  r  r  _schemaru   itemszipreversedr[   r   r  r   )r   reduce_op_expectedrk   r=  r   r   resultsmodelr   r  r   clschemanew_clbaselinert  vr   r   diffs                       rB   test_op_reduce%TestReferenceEvaluator.test_op_reduce  s   @ 1	IIaL  )00<!!%3!%(hhtgq\* #u ^^A&++55
5{{##..y9 5 	 

 AiQ%//!3k65JK!%:hhtgq\*#&% MMODAqHX.<177agg%(-i]"XJayPTUVTWWXYZY`Y`Xaabc  vva!e}((*$;(-dV6)b
RVWXVYY[\][^^defdgh  = $
s   $.HH)r<  )r  )rV  	ref_opsetc                 t   [        S[        R                  / SQ5      n[        S[        R                  / SQ5      n[        SS/S/5      /n[	        USU/U/5      n[
        R                  R                  SSSS5      R                  [
        R                  5      n[        U[        SU5      /S	9n[        U5      n	U	R                  S SU05      S
   n
[        U[        SU5      /S	9n[        U5      nUR                  S SU05      S
   nU R                  UR                  U
R                  5        [!        X5        g )Nr   rk  r   MeanVarianceNormalizationrl  r   rp   r_   r   r   )r!   r   r   r   r   rx   randomrandr1  r   r   r   r&   r   r   r[   r   )r   rk   r^  r   r   r  r   r   rh   r  r  ref_onnx_modelref_expectedr   s                 rB   test_mvnTestReferenceEvaluator.test_mvn  s    #3(9(9;ST"3(9(9;ST1C53%@
 5#sQC0IINN1aA&--bjj9l2u6M5NO
 ,ggdS!H%a(#E,r9:U9VW).9##D3(3A63&rJ   c                    S nU" 5       n[         R                  " SS/SS//[         R                  S9n[         R                  " SS//[         R                  S9n[         R                  " S	S
//[         R                  S9n[         R                  " X4U/5      n[	        U5      nX4US.nUR                  S U5      n	[        XiS   5        g )Nc                     / n / n/ n/ n[        5       SS.n/ n[        SSS/S/SSS	9nUR                  U5        UR                  5        VVs/ s H  u  px[	        Xxc  SOU5      PM     n	nn[        S
SSS/S/UU	5      n
UR                  U
5        UR                  [        S[        R                  / 5      5        UR                  [        S[        R                  / 5      5        UR                  [        S[        R                  / 5      5        UR                  [        S[        R                  / 5      5        [        SSS/S/SS
S	9nU R                  U5        [        SSS/S/SS
S	9nU R                  U5        UR                  5        VVs/ s H  u  px[	        Xxc  SOU5      PM     nnn[        U SX5      n[        XUS9nU$ s  snnf s  snnf )Nrp   )r_   custom_domainConcatzx:0zx:1r__0r   r_   )r.  rc   ri  concat_2I__0I__1I__2r__4r__3numpyxrH  )r   r   rN  rO  r   r   r!   r   DOUBLEr   r   )r  r   r  rI  r   	nodes_fctrP  rc   rd   opset_imports_fctr  r   r   rh   s                 rB   create_modelFTestReferenceEvaluator.test_concat_in_a_function.<locals>.create_model  s   EFGI,.CFIXu~xaPRSDT" (.||~!'5OF V/QwG'5  !  !C S!MM09K9KRPQMM09K9KRPQMM09K9KRPQNN1&+:L:LbQRVV,vhQD LLVV,vhQD LL (.||~'5OF V/QwG'5  
 uh@E#iJ K!6s   GG
r   r   r  r   rq   rp   ro   r   )ro  rm  rn  r   )rx   ry   float64vstackr&   r   r   )
r   rv  rh   x1x2x3r   r  r  r  s
             rB   test_concat_in_a_function0TestReferenceEvaluator.test_concat_in_a_function  s    0	d "^
XXAwQ(

;XX1vhbjj1XXBxj

3IIrrl# ,4ggdE"q6"rJ   c                 :   [        S[        R                  S /5      n[        S[        R                  S /5      n[	        [        [        SS/S/[        R                  S9/SU/U/5      5      n[        U5      n[        R                  " SSS[        R                  /5      nUR                  S SU05      S	   nU R                  U[        R                  " SSS[        R                  /5      R                  [        R                  5      :H  R                  5       5        g )
Nr   r   Castr]  rl  Clp?Q}>ʈÿr:  r   )r!   r   r   STRINGr   r   r   r&   rx   ry   nanr   
assertTruer1  str_allr   r   r   rT  r  r~   r  s          rB   test_cast_float_to_string0TestReferenceEvaluator.test_cast_float_to_string  s    "3(9(9D6B"3(:(:TFCfsecU{7I7IJ 	
 !'xx9c266:;ggdS$K(+BHHh	3?@GGPPUUW	
rJ   c                 
   [        S[        R                  S /5      n[        S[        R                  S /5      n[        [	        [        SS/S/[        R                  S9[        SS/S/[        R                  S9/SU/U/5      5      n[        U5      n[        R                  " SSS	[        R                  /5      nUR                  S SU05      S
   n[        U[        R                  " SSS	[        R                  /5      5        g )Nr   r   r  rj  r]  rl  r  r  r:  r   )r!   r   r   r   r   r   r  r&   rx   ry   r  r   r   r  s          rB   "test_cast_float_to_string_and_back9TestReferenceEvaluator.test_cast_float_to_string_and_back  s    "3(9(9D6B"3(9(9D6BfsecU{7I7IJfsecU{7H7HI 

 !'xx9c266:;ggdS$K(+RXXxC&HIJrJ   c                    [        S[        R                  S 5      n[        S[        R                  S 5      n[        S[        R                  S 5      n[        SSS/S/SS9/n[        [        USX/U/5      5      n[        U5      n[        R                  " S5      R                  S	5      R                  [        R                  5      n[        R                  " S[        R                  S
9nUR!                  S XxS.5      n	[        R                  " SS/SS/SS///[        R                  S
9[        R                  " SS/SS/SS///[        R                  S
9[        R                  " SS/SS/SS///[        R                  S
9//n
U R#                  [%        U
S   5      [%        U	S   5      5        ['        U
S   U	S   5       H  u  p[)        X5        M     g )Nr   r   rj  SplitToSequencero   r  rl  rV  rp   r   r   rq   rn  r:  r#  r  r  r  r  r$  r%  r  r  r   r  r&  r'  rC  r  r  r  r   r!   r   r   r?  	UNDEFINEDr   r   r   r&   rx   r0  r   r1  r   ry   r@  r   r   rv   rP  r   r   r   r   rj  r  rT  r  r~   r+  r  r   r   r   s                rB   test_split_to_sequence-TestReferenceEvaluator.test_split_to_sequence  s   "3(9(94@"3(9(94@"3(=(=tD,sCj3%aHI:eS1&1#>? 'yy}$$Y/66rzzB((1BHH-ggd$56 C:SzD$<@ATC:SzD$<@ATC:d|dD\BC2::V
 	Xa[)3s1v;7SV,DAA! -rJ   c                    [        S[        R                  S 5      n[        S[        R                  S 5      n[        S[        R                  S 5      n[        SSS/S/SS9/n[        [        USX/U/5      5      n[        U5      n[        R                  " S5      R                  S	5      R                  [        R                  5      n[        R                  " / S
Q[        R                  S9nUR!                  S XxS.5      n	[        R                  " SS/SS/SS///[        R                  S9[        R                  " SS/SS/SS///[        R                  S9[        R                  " SS/SS/SS///[        R                  S9//n
U R#                  [%        U
S   5      [%        U	S   5      5        ['        U
S   U	S   5       H  u  p[)        X5        M     g ) Nr   r   rj  r  ro   r  rl  rV  r  )ro   ro   ro   rq   rn  r:  r#  r  r  r  r  r$  r%  r  r  r   r  r&  r'  rC  r  r  r  r   r  r  s                rB   test_split_to_sequence_1d0TestReferenceEvaluator.test_split_to_sequence_1d3  s   "3(9(94@"3(9(94@"3(=(=tD,sCj3%aHI:eS1&1#>? 'yy}$$Y/66rzzB((9BHH5ggd$56 C:SzD$<@ATC:SzD$<@ATC:d|dD\BC2::V
 	Xa[)3s1v;7SV,DAA! -rJ   c                    [        S[        R                  S 5      n[        S[        R                  S 5      n[	        SS/S/SSS9/n[        [        USU/U/5      5      n[        U5      n[        R                  " S5      R                  S	5      R                  [        R                  5      nUR                  S SU05      n[        UR                  S   5       Vs/ s H  oS S 2S S 2U4   PM     sn/n	U R!                  [#        U	S   5      [#        US   5      5        [%        U	S   US   5       H  u  p['        X5        M     g s  snf )
Nr   rj  r  ro   r   r-  rl  rV  r  )r!   r   r   r  r   r   r   r&   rx   r0  r   r1  r   r   rz   r[   r   rv   rP  r   )r   r   rj  r  rT  r  r~   r  r   r   r   r   s               rB   )test_split_to_sequence_nokeepdims_noinput@TestReferenceEvaluator.test_split_to_sequence_nokeepdims_noinputH  s   "3(9(94@"3(=(=tD,secUQOP:eS1#s;< 'yy}$$Y/66rzzBggdS$K(,1$**Q-,@A,@q!Q'],@ABXa[)3s1v;7SV,DAA! - Bs   Ec                 0   [        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        [	        [        SS/S/[        R                  S9[        SS/S	/[        R                  S9[        S
/ S/[        S[        R                  S// SQ5      S9[        S
/ S/[        S[        R                  S// SQ5      S9[        SS/S/[        R                  S9[        SS	/S/[        R                  S9[        SS/S/[        R                  S9[        SS/S/[        R                  S9/SU/X#XE/5      5      n[        U5      n[        R                  " / SQ[        R                  S9n[        R                  " U V	s/ s H  n	[        [        U	5      5      PM     sn	5      n
[        R                  " U V	s/ s H  n	[        [!        U	5      5      PM     sn	5      nUR#                  S SU05      n[%        US   U
5        [%        US   U5        [%        US   U
5        [%        US   U5        g s  sn	f s  sn	f )Nr   F1F2F3F4r  f81r]  f82r|  C1r   r   rp   ro   g?rI  r  C2rl  rq   r   rp   ro   r   )r!   r   r   r   r   r   r_  
FLOAT8E5M2r   r&   rx   ry   r   r#   r   r$   r   r   r   )r   r   r  r  r  r  rT  r  r~   r   	expected1	expected2r  s                rB   test_cast_float8'TestReferenceEvaluator.test_cast_float8V  s\   "3(9(9D6B#D+*;*;dVD#D+*;*;dVD#D+*;*;dVD#D+*;*;dVDfseeW9Q9QRfseeW9O9OP") +":":QCAU	 ") +"8"81#?S	 fugv+:K:KLfugv+:K:KLftftf9J9JKftftf9J9JK-0  7
> !'xx,BJJ?HHFJKd"#8#;<dK
	 HHFJKd"#8#;<dK
	 ggdS$K(A	*A	*A	*A	* L Ls   JJc                    [        S[        R                  S /5      n[        S[        R                  S /5      n[        [	        [        SS/S/[        R                  S9[        SSS/S/SS	9[        SS/S/[        R                  S9/S
U/U/5      5      n[        R                  " SS/[        R                  S9n[        R                  " U Vs/ s H  n[        [        USSS9SS9PM     sn5      n[        U5      nUR                  S SU05      n[        US   U5         " S S[        5      n	[        X9/S9nUR                  S SU05      n[        US   U5        g s  snf )Nr   r   r  f8r]  CastLikef32r   )saturaterl  g    cArq   TF)uzr  )r  c                       \ rS rSrSrSrg)>TestReferenceEvaluator.test_cast_like_float8.<locals>.CastLikei  r_   r   N)r  r  r  r  r  r  r   rJ   rB   r  r    s    IrJ   r  )r!   r   r   r   r   r   FLOAT8E4M3FNUZrx   ry   r   r#   r   r&   r   r   r(   )
r   r   r   rT  r~   r   r   r  r  r  s
             rB   test_cast_like_float8,TestReferenceEvaluator.test_cast_like_float8  sc   "3(9(9D6B"3(9(9D6BfsedV8R8RSj3+wKfugu9J9JK
 	
 xxC

388
 	 A &)!uE$ 	
 !'ggdS$K(A)	{ 	 !
;ggdS$K(A)%s   Ec                 j   [        S[        R                  S /5      n[        S[        R                  S /5      n[        S[        R                  S /5      n[        [        [        SS/S/[        R                  S9[        SS/S/[        R                  S9/SU/X#/5      5      n[        U5      n[        R                  " / SQ[        R                  S9n[        R                  " U Vs/ s H  n[        U5      PM     sn5      n[        R                  " U Vs/ s H  n[        U5      PM     sn5      n	UR                  S SU05      n
U R                  UR!                  5       U
S	   R!                  5       5        U R                  U	R!                  5       U
S
   R!                  5       5        g s  snf s  snf )Nr   r  r  r  r]  rl  r  rq   r   rp   )r!   r   r   r_  r  r   r   r   r&   rx   ry   r   r   r   r   r   r  )r   r   r  r  rT  r  r~   r   r  r  r  s              rB   test_cast_float8_output.TestReferenceEvaluator.test_cast_float8_output  sd   "3(9(9D6B#D+*B*BTFK#D+*@*@4&IfsedV8P8PQfsedV8N8NO 

 !'xx,BJJ?HHE13A6EF	HHE13A6EF	ggdS$K())+SV]]_=))+SV]]_=	 FEs   (F+F0c                    [         R                  " SSSSSSSSS	S
SSS[         R                  [         R                  * [         R                  /[         R                  S9n[
        R                  [         R                  " SSSSSSSSSSSSSSS[         R                  /[         R                  S9[
        R                  [         R                  " SSSSSSSSSSSSSSS[         R                  /[         R                  S9[
        R                  [         R                  " SSSSSSSSSSSSSSS[         R                  /[         R                  S9[
        R                  [         R                  " SSSSSSSSS SSSSSS[         R                  /[         R                  S90nS! nUR                  5        H  u  pEU R                  US"9   U" U5      n[        U5      nUR                  S S#U05      S$   n[        XX5        U R                  UR                   UR                   5        U R                  UR"                  UR"                  5        S S S 5        M     g ! , (       d  f       M  = f)%Ng	?i`  i  iP  i0  i  iig-C6?g{Gz?i       j@rq   g      ?g      v@g      z@g      t@g      p@g      pg      Xr:  g      ?g      |@g      |g      n@g      ng      ?g      x@g      ?g      @g      g?c                    [        S[        R                  S /5      n[        S[        R                  S /5      n[        SS/S/U S9n[        SS/S/[        R                  S9n[	        X4/SU/U/5      n[        U5      n[        U5        U$ )Nr   r   r  r	  r]  r   )r!   r   r   r   r   r   r   )r^  r   r   r   r   r   rh   s          rB   model_cast_castCTestReferenceEvaluator.test_float8_4_types.<locals>.model_cast_cast2  s    &sK,=,=vFA&sK,=,=vFAfsecUr:EfsecU{7H7HIE~taS1#>E#E*J
#rJ   r]  r   r   )rx   ry   infr  r   r   r_  r  r  FLOAT8E5M2FNUZrO  r  r&   r   r   r   r[   rr   )	r   r   r   r  r^  expectrh   r  r   s	            rB   test_float8_4_types*TestReferenceEvaluator.test_float8_4_types  sb   HH!$ **'
, $$bhhFF!$ jj''* &&FF!$ jj')* ""BHH&FF!$ jj'%* &&!     !!!!    !FF!$ jj')AU
n	 #..*JB$,R0
(4GGD3(+A.*  qww7  qww7 %$ +$$s   BI
I"	c                 0   [        S[        R                  S /5      n[        S[        R                  S /5      n[	        [        [        SS/S/[        R                  S9/SU/U/5      5      n[        U5      n[        R                  " / SQ[        R                  S9n[        R                  " U Vs/ s H  n[        U5      PM     sn5      nUR                  S SU05      nU R                  UR                  5       US   R                  5       5        g s  snf )	Nr   r   r  r]  rl  r   rp   ro   r  rI  rq   r   )r!   r   r   BFLOAT16r   r   r   r&   rx   ry   r   r   r   r   r  )	r   r   r   rT  r  r~   r   r  r  s	            rB   test_cast_bfloat16_output0TestReferenceEvaluator.test_cast_bfloat16_outputE  s    "3(9(9D6B"3(<(<tfEfsecU{7K7KL 	
 !'xx+2::>HHdCd1!4dCD	ggdS$K())+SV]]_= Ds   1Dc                 n   [        S[        R                  S /5      n[        S[        R                  S /5      n[        [	        [        S/ S/[        S[        R                  S/S/5      S9[        S/ S/[        S[        R                  S/S	/5      S9[        S
/ SQS/5      [        SSS/S/SS9/SU/U/5      5      n[        U5      n[        R                  " / SQ[        R                  S9n[        R                  " / SQ[        R                  S9nUR                  S SU05      n[        XgS   5        g )Nr   r   r|  scalerp   r$  r  r  r:  QuantizeLinearr   r  r  r	  DequantizeLinearr   r  rl  r  rq   r   rp   ro   i     r!   r   r   r   r   r   r   r_  r&   rx   ry   r   r   r   r   r   r   rT  r  r~   r   r  s           rB   test_quantize_linear_e4m30TestReferenceEvaluator.test_quantize_linear_e4m3X  s+   "3(9(9D6B"3(9(9D6B" 	)';3D3DqcC5Q	 ")&+2J2JQCRUQVW	 .0FN03.3%aP  '
. !'xx+2::>88/rzzBggdS$K(a&)rJ   c                 D   [        S[        R                  S /5      n[        S[        R                  S /5      n[        [	        [        S/ SQS/5      [        SSS/S/SS	9/S
U/U/[        S[        R                  S/S/5      [        S[        R                  S/S/5      /5      5      n[        U5      n[        R                  " / SQ[        R                  S9n[        R                  " / SQ[        R                  S9nUR                  S SU05      n[        XgS   5        g )Nr   r   r  r  r	  r  r  r   r  rl  rp   r$  r  r:  r  rq   r  r  r  s           rB   %test_quantize_linear_e4m3_initializer<TestReferenceEvaluator.test_quantize_linear_e4m3_initializerx  s   "3(9(9D6B"3(9(9D6B.0FN03.3%aP ):):QC#G(@(@1#uM
 !'xx+2::>88/rzzBggdS$K(a&)rJ   c                 n   [        S[        R                  S /5      n[        S[        R                  S /5      n[        [	        [        S/ S/[        S[        R                  S/S/5      S9[        S/ S/[        S[        R                  S/S	/5      S9[        S
/ SQS/5      [        SSS/S/SS9/SU/U/5      5      n[        U5      n[        R                  " / SQ[        R                  S9n[        R                  " / SQ[        R                  S9nUR                  S SU05      n[        XgS   5        g )Nr   r   r|  r  rp   r$  r  r  r:  r  r  r	  r  r   r  rl  r  rq   )r   rp   ro   i  r  )r!   r   r   r   r   r   r   r  r&   rx   ry   r   r   r   r  s           rB   test_quantize_linear_e5m20TestReferenceEvaluator.test_quantize_linear_e5m2  s*   "3(9(9D6B"3(9(9D6B" 	)';3D3DqcC5Q	 ")&+2H2H1#PSuU	 .0FN03.3%aP  '
. !'xx+2::>881DggdS$K(a&)rJ   c           
         S nSnSnSnSn[        S[        R                  / SQ5      n[        S[        R                  S 5      n[	        S	S/S/X#XES
9/n[        [        USU/U/5      5      n	[        U	5      n
[        R                  R                  SSSS5      R                  [        R                  5      nU
R                  S SU05      nU" XX4U5      nU R                  [        U5      [        US   5      5        g )Nc                    [         R                  " S5      R                  [         R                  5      n[         R                  " U R
                  5       H  u  pgp[        U U[        SU[        [        R                  " US-
  S-  5      5      -
  5      [        SU[        [        R                  " US-
  S-  5      5      -   S-   5      2UU	4   S-  5      XVXxU	4'   M     XX-  U-  -   U-  -  n
U
$ )N)r   r   r   r   r   rp   ro   r   )rx   r|   r1  r   ndindexr[   r2  r   rX   mathfloorr   ceil)r   r  betar  r  
square_sumr   r   hr  r   s              rB   	_expected2TestReferenceEvaluator.test_lrn.<locals>._expected  s    ,/66rzzBJ jj1
a),Aq3tzz4!8q.'A#BBCcq3tyy$(a'@#AAAEG   
*
aA:& 2 elj88TABAHrJ   g-C6*?r  r$  r   r   )r   r   2   r  rj  LRN)r  r  r  r  rl  r   r   )r!   r   r   r  r   r   r   r&   rx   ra  rb  r1  r   r   r   rv   )r   r  r  r  r  r  r   rj  r  rT  r  r~   r  r   s                 rB   test_lrnTestReferenceEvaluator.test_lrn  s    	$ "3(9(9>J"3(=(=tDecUSEX
 :eS1#s;< 'yy~~aAq)00<ggdS$K(T$d;XCF4rJ   c           	         [         R                  " S5      R                  S5      R                  [         R                  5      S-   [         R                  " S5      R                  S5      R                  [         R                  5      [         R
                  " S[         R                  S9S.n[        SS/S/SS/S/S	S
9n[        S0 UDUD6n[        S0 UDUD6n[        X45        g )Nr   )rp   rp   r   rp   r   r   r  rq   rm  NOTSETr,  r   r   r   r   r  r   
rx   r0  r   r1  r   r|   dictr3   r4   r   r   r  r@   r   r  s        rB   test_conv_im2col_1d*TestReferenceEvaluator.test_conv_im2col_1d  s    :&..z:AA"**MPQQ1%%i077

C$bjj1

 cQC
 (:%:6:)<E<V<&rJ   c           	         [         R                  " S5      R                  S5      R                  [         R                  5      S-   [         R                  " S5      R                  S5      R                  [         R                  5      [         R
                  " S[         R                  S9S.n[        SS/S/S	S	/S/S
S9n[        S0 UDUD6n[        S0 UDUD6n[        X45        g )Nr  )ro   r   r   rp   )r   r   r   r  rq   rm  r   r   r  r  r   r  r  s        rB   test_conv_im2col_1d_pad0/TestReferenceEvaluator.test_conv_im2col_1d_pad0  s    9%--j9@@LqP9%--j9@@L$bjj1

 cQC
 (:%:6:)<E<V<&rJ   c           	         [         R                  " S5      R                  S5      R                  [         R                  5      S-   [         R                  " S5      R                  S5      R                  [         R                  5      [         R
                  " S[         R                  S9S.n[        SSS/S	S	// S
QSS/SS9n[        S0 UDUD6n[        S0 UDUD6n[        X45        g )N   )rp   rp   r      rp   rr  rq  r  rq   rm  r   rn  r  r  r   r  r  s        rB   test_conv_im2col_2d*TestReferenceEvaluator.test_conv_im2col_2d  s    ?+33NCJJ2::V1%%l3::2::F$bjj1	
 !fQF
 (:%:6:)<E<V<&rJ   c           	         [         R                  " S5      R                  S5      R                  [         R                  5      S-   S[         R                  " S5      R                  S5      R                  [         R                  5      -  [         R
                  " S[         R                  S9S	.n[        SSS/SS// S
QSS/SS9n[        S0 UDUD6n[        S0 UDUD6n[        X45        g )Nr+  )ro   r   r   r   rp   ro   rV  )r   r   rp   ro   r  rq   rm  r  r  r  r   r  r  s        rB   test_conv_im2col_2d_pad0/TestReferenceEvaluator.test_conv_im2col_2d_pad0
  s    =)11-@GG

SVWWyy'//>EEbjjQR$bjj1	
 !fQF
 (:%:6:)<E<V<&rJ   c           	         [         R                  " S5      R                  S5      R                  [         R                  5      S-   S[         R                  " S5      R                  S5      R                  [         R                  5      -  [         R
                  " S[         R                  S9S	.n[        SSS/S
S
/SS/S SS9n[        S0 UDUD6n[        S0 UDUD6n[        X45        g )Nr  )rp   rp   r   r   rp   ro   rr  rq  r  rq   rm  r   
SAME_LOWER)r,  r   r   r   r   r  r   r  r  s        rB   test_conv_im2col_2d_autopad2TestReferenceEvaluator.test_conv_im2col_2d_autopad  s    5!))-8??

KaObii&..|<CCBJJOO$bjj1

 !fQF!
 (:%:6:)<E<V<&rJ   c           	         [         R                  " S5      R                  S5      R                  [         R                  5      S-   [         R                  " S5      R                  S5      R                  [         R                  5      [         R
                  " S[         R                  S9S.n[        S/ S	Q/ S
Q/ SQ/ S	QSS9n[        S0 UDUD6n[        S0 UDUD6n[        X45        g )Ni  )rp   rp   r   r   r<  rp   r  )rp   rp   r   r   r   r  rq   rm  )rp   rp   rp   r  )rp   rp   rp   rp   rp   rp   r  r  r   r  r  s        rB   test_conv_im2col_3d*TestReferenceEvaluator.test_conv_im2col_3d/  s    ./W&'VBJJ 2&&7>>rzzJ$bjj1
 "#
 (:%:6:)<E<V<&rJ   c           	         [         R                  " S5      R                  S5      R                  [         R                  5      S-   [         R                  " S5      R                  S5      R                  [         R                  5      [         R
                  " S[         R                  S9S.n[        SSS/S	S	// S
QSS/SS9n[        S0 UDUD6n[        S0 UDUD6n[        X45        g )Nr:  r8  rp   6   r9  r;  rq   rm  r   rn  ro   r  r  r   r  r  s        rB   test_conv_im2col_2d_strides2TestReferenceEvaluator.test_conv_im2col_2d_stridesD      =)11,?FFrzzRUVV=)11,?FFrzzR$bjj1

 !fQF
 (:%:6:)<E<V<&rJ   c           	         [         R                  " S5      R                  S5      R                  [         R                  5      S-   [         R                  " S5      R                  S5      R                  [         R                  5      [         R
                  " S[         R                  S9S.n[        SS	S/S
S
// SQS	S	/SS9n[        S0 UDUD6n[        S0 UDUD6n[        X45        g )Nr:  r8  rp   r  r9  r;  rq   rm  ro   r   rn  r  r  r   r  r  s        rB   test_conv_im2col_2d_dilations4TestReferenceEvaluator.test_conv_im2col_2d_dilationsV  r  rJ   ))r&  )rC  )rD  )r  )rG  )rH  r7  c                    [        S[        R                  S 5      n[        S[        R                  S 5      n[        R                  " S5      R                  S5      R                  [        R                  5      n[        US/S/SS9/n[        [        USU/U/5      5      n[        U5      nUR                  S SU05      nUS   n	U R                  U	[        R                  5        U R                  U	R                   S5        g )	Nr   r   r   )rp   r   ro   r   r;  rl  r   )r!   r   r   rx   r0  r   r1  r   r   r   r   r&   r   ru  ndarrayr   r[   )
r   opr   r   r~   r  rT  r  r  rs
             rB   test_reduce_op_no_axis-TestReferenceEvaluator.test_reduce_op_no_axish  s     #3(9(94@"3(9(94@yy|##I.55bjjA2usea89:eS1#s;< 'ggdS$K(Fa,"%rJ   )r  r;  r   r   )r   )r   c           	      :   [        S[        R                  S 5      n[        S[        R                  S 5      n[        S[        R                  S 5      n[        S[        R                  S 5      n[        R
                  " S/[        R                  S9n[        S/ SQS/S	S
9n[        [        U/SX#U/U/5      5      n[        U5      n	[        R
                  " S/[        R                  S9R                  SU-  5      n
[        R
                  " SS/U-  [        R                  S9nU	R                  S XUS.5      S   nU R                  UR                  SU-  5        U R                  UR                   [        R                  5        [        R"                  " SS/U5      R%                  [        R                  5      nU	R                  S XUS.5      S   nU R                  UR                  SU-  5        U R                  UR                   [        R                  5        g )Nr   PVr   r   rq   Pad)r   r  r  rL  )r   r  r  rl  rp   r  r   r  r   r   )r   )r!   r   r   r?  rx   ry   r   r   r   r   r&   r   r@  r   r   r[   rr   rg  r1  )r   dimr   r  r  r   r  rP  rT  r  r   pr  s                rB   test_padTestReferenceEvaluator.test_pad  s   "3(9(94@"3(9(94@"3(9(94@"3(9(94@"RZZ0JW:tfcA!9qcBC 'HHaS

+33D3J?HHaVc\2ggd!%89!<D3J/BJJ/IIq!fc"))"((3ggd!%89!<ECK0BJJ/rJ   c                    [        S[        R                  S 5      n[        S[        R                  S 5      n[        SS/S/S9[        SS/S/[	        S[        R
                  S/S/5      S	9/n[        [        US
U/U/5      5      n[        U5      n[        R                  " S[        R                  S9nUR                  S SU05      S   nU R                  UR                  [        5       5        U R                  UR                   [        R"                  5        [%        [        R                  " S[        R"                  S9U5        g )Nr   r   r  r[   r  ConstantOfShaper  rp   r  rl  rq   r   )r!   r   r   r   r   UINT16r   r   r&   rx   ry   r   r   r   r[   rs   rr   uint16r   r   r   r   r  rT  r  r   r  s           rB   test_constant_of_shape-TestReferenceEvaluator.test_constant_of_shape  s	   "3(9(94@"3(9(94@ gsegY?!y!';+=+=sQCH	
 :eS1#s;< 'HHQbjj)ggdS!H%a(EG,BII."))4c:rJ   c                    [        S[        R                  S 5      n[        S[        R                  S 5      n[        S/ S/[	        S[        R
                  S/S/5      S9[        S	S/S
/S9[        SS
/S/[	        S[        R                  S/S/5      S9[        SSS/S/5      /n[        [        USU/U/5      5      n[        U5      n[        R                  " S[        R                  S9nUR                  S SU05      S   nU R                  UR                  [!        5       5        U R                  UR"                  [        R$                  5        ['        [        R                  " S[        R$                  S9U5        g )Nr   r   r|  liker   rp   ro   r  r  r[   r  r  r  r  r  r  rl  rq   r   )r!   r   r   r   r   r  r?  r   r   r&   rx   ry   r   r   r   r[   rs   rr   r   r   r!  s           rB   test_constant_of_shape_castlike6TestReferenceEvaluator.test_constant_of_shape_castlike  sJ   "3(9(94@"3(9(94@ !#{'9'9A3D	 gsegY?!y!';+<+<qcA3G	 j5&/C59
  :eS1#s;< 'HHQbjj)ggdS!H%a(EG,BII."))4c:rJ   c           
      j   S[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S90n[         R                  " / SQ/ S	Q/ S
Q/ SQ/ SQ/[         R                  S9[         R                  " S[         R                  S9[         R                  " S[         R                  S9/n[	        S[
        R                  S 5      n[	        S[
        R                  S 5      n[	        S[
        R                  S 5      n[	        S[
        R                  S 5      n[        SS// SQ5      /n[        [        USU/XEU/5      [        S[        5       S-
  5      /S9n[        U5      n	U	R                  S U5      n
U R                  [!        U
5      S5        [#        SSS5       H  n[%        X+   X   5        M     g )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`Rrq   )dr  r  r  r     r     r  r     r  i   r           r           w         z            r  y   r1  r        r         r5  r)  ]      a   r7  r=  r  r  rA     r     J   U         s   r  r        rH  r.  k         q   r     r        rL  ^      r+  r)  r  r:     r9  X      r  r4     r@        r6     r=  rV     rW  r     r<  r  rA  F   r-  r  )db   r  r  x   r/  rP  rV  r9        rF  r     r     r5     r  r  r5  g   r  r8  r     rF  ra  r  r  }   rL     rQ  r  ra  r7     rb  j   r=  p   r  rd  rG  r6  r,  r  r     r  r  r  r  rN  rK        r  r7  rc  r  r_  rb  r  r      n   r  r5  rk  rk  r  r=  r  r  r  r/  r  r  r)  r  ra  rT  r     rr  u   rB  r>  r  r  r)  rd  r  ra     r  rL  rF  r  )drT  r  r  r6  rW  r1  r  r4  ra  rp  r7  Y   r  r-  rG  r  ra  rT  rN  ri  r  r     r  r     r     r:  r  r        rk  r\  rv  rt  rM  r  rt  W   r>        ro     r<  rF     r  r?  r5  rv  rk  ~   rb  r  rZ  r-  r@  r  rL  rW  r1  r3  rw  rs  rR  r  r  rT  r>     rd  r+  r~  r  r8  r:  r  rX  r  r9  rd  r  rp  rq  rL  r@  r  r\  rh  r  r<  rz  r  r:  r>  r  rz  )dr  V   r4  rL  r~  r1  rt  rS  r  r8  r=  rE  r  r  r|  r~  r  rt  rL  rZ  r_  r  rO  r9  rP  r9  rv     r     r  r\  rz  >   r  rb  rP  rv  rN  r4  rN  r  r4  r[  r3  r  rh  r  rB  rU  r  r`  r=  r>  r  rh     rG  r6  rI  m   r  r  rg  rN     r_  r  r  v   rj  r  rf  r  rW  rv  rd  r-  r  r  rz  r  r)  r  rG  r`  r:  r*  r  r  rp  r-  r@  r@  rz  r;  rs  r  rm  r  )drS  ru  r7  rP  r  r@  r  rH  r5  rO  rf  r  r  r  rG  `   rt  r  r  r5  C   r  r\  r     r  rt  rZ  rq  r7  rp  rG     r  r-  r7  r     rT  r)  r  r{  rw     r  rA  ri  rq  rJ  9   rU  rm  rI  r  r  r  r  rG  rL  rI  r,  r  r  r  re  r;  r3  rR  r  ro  G   rF  rv  r7  r5  r:  rP  r  r  rT     r`  r  r  rJ  rx  r_  r0  r  rB  rQ  r@  r1  r<  r  r=  ro  r  rb  r  g    v?rS  r   r  zpDynamicQuantizeLinear)r   r  r  rl  r_   rp   r   r   ro   r   )rx   ry   r   r!  r!   r   r   r  r   r   r   r   r   r&   r   r   rv   rz   r   )r   r  r   r   r   ScaleZpr  rT  r  r  r   s               rB   test_dynamic_quantize_linear3TestReferenceEvaluator.test_dynamic_quantize_linear  s   eLeLeLeLes@ jjCBD
N HHeLeLeLeLes@ hhCBF HH)<HHS)KF
P #3(9(94@"3(9(94@&w0A0A4H#D+*;*;TB '$
 ucA327',>,@1,DEF
 !'ggdE"S1%q"b!AHK0 "rJ   abcdefz.comz.netzabc.comzdef.netr;  )catdogsnakes)catsdogssnakesr  )r  r  r  r   )r      ßr   )aau   ßßyyc                 J   [        S[        R                  S 5      n[        S[        R                  S 5      n[        S[        R                  S 5      n[        SSS/S/S9n[	        [        U/SXV/U/5      5      n	[        U	5      n
U
R                  S [        R                  " U5      [        R                  " U5      S.5      tp[        R                  R                  X5        U R                  UR                  R                  S5        U R                  UR                  U5        g )	Nr   r   r   StringConcatr  rl  )r   r   O)r!   r   r  r   r   r   r&   r   rx   ry   testingassert_array_equalr   rr   kindr[   )r   r   r   r   expected_shaper   r   r   rP  rT  r  r"  r   s                rB   test_string_concat)TestReferenceEvaluator.test_string_concat  s     #3(:(:DA"3(:(:DA"3(:(:DAc
SEJ:tfcA6A3?@ 'WWT!288A;#GH



%%f7**C0~6rJ   z1,2,34,5,6,)123)456r   )1,4,6r_   r  r_   r  r  )ro   ro   rp   )r  r  r  rp   z5,6)rp   ro   ro   )r  r  r  )r  r_   r_   )r  r  r_   )ro   ro   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           	      ^   [        S[        R                  S 5      n[        S[        R                  S 5      n[        S[        R                  S 5      n[	        SS/SS/UUS9n	[        [        U	/SU/Xx/5      5      n
[        U
5      n[        R                  " U[        S9nUR                  S SU05      tpn[        R                  R                  U[        R                  " U[        S95        [        R                  R                  U[        R                  " U[        R                  S95        g )Nr   Splits	MaxSplitsStringSplit)r   r  	delimitermaxsplitrl  rq   )r!   r   r  INT32r   r   r   r&   rx   ry   objectr   r  r  r@  )r   r   r  r  expected_splitexpected_num_splitsr   r  r  rP  rT  r  r"  
num_splitsr   s                  rB   test_string_split(TestReferenceEvaluator.test_string_split   s    ^ #3(:(:TC'+2D2DtM*;8I8IDR	5{+
 :tfcA38KLM 'HHQf%!$Qx!8Q


%%fbhh~V.TU


%%!4BHHE	
rJ   )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|$))TFFTr  win32z)google-re2 package is not built for win32c                    [        S[        R                  S 5      n[        S[        R                  S 5      n[	        SS/S/US9n[        [        U/SU/U/5      5      n[        U5      n	U	R                  S S[        R                  " U5      05      tp[        R                  R                  X5        U R                  U
R                  R                  S5        U R                  U
R                   U5        g )Nr   r   RegexFullMatchr   r  patternrl  r   )r!   r   r  r  r   r   r   r&   r   rx   ry   r  r  r   rr   r  r[   )r   r   r  r   r  r   r   rP  rT  r  r"  r   s               rB   test_regex_full_match,TestReferenceEvaluator.test_regex_full_matchb  s    > #3(:(:DA"3(8(8$?)3%#PWX:tfcA3<= 'WWTC!#56



%%f7**C0~6rJ   c                    [        S[        R                  S 5      n[        S[        R                  S 5      n[	        SS/S/SS9n[        [        U/SU/U/5      5      n[        U5      nU R                  [        5         UR                  S S[        R                  " S/5      05        S S S 5        g ! , (       d  f       g = f)Nr   r   r  zx)r  rl  r   )r!   r   r  r  r   r   r   r&   r   rw   r   rx   ry   )r   r   r   rP  rT  r  s         rB   test_regex_invalid_pattern1TestReferenceEvaluator.test_regex_invalid_pattern  s     #3(:(:DA"3(8(8$?)3%#PTU:tfcA3<= 'z*GGD3#01 +**s   ?*B22
C r   )FNg      r#  r  r]  )r  r  r  r  r   staticmethodr  r   r   r   r   r   r   r  r  r  r  r#  r4  r8  rB  rS  rW  rZ  r]  rd  rg  rq  rt  rx  r  r  r  r  r  r   r6  rB  rH  rL  rP  rT  rZ  ra  re  rh  rH   r  r  r  r  r  r  r  r  r  rO   r  r  r  r#  r(  r5  r=  rF  rT  r_  rc  r  r  r  r=   skipIfversion_utilsnumpy_older_thanr  r  r  r  r  r  rT   r  r  r  r  r  r  r  r  r  rA  parameterizedexpand	itertoolsproductrx   ry   r  r   r@  rX   r[  re  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r"  r&  r  r  r   r  sysplatformr  r  r  r   rJ   rB   r   r      s	   F 3 :   3 3j"
''R'h'#+J-+^2*h'''1*f'''
 $'''*>X1-f5*nl*\{*z1'fG*R-&&	0
0%&%* (0 (0T ' 'BCJ











 %( %(N)0V 
 

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

 $D/L&+P+B0+d+4+0K+ZC+J4+l __&&x05/+	/+b __&&x053+	3+jS&
8 . .5 4  42026%2N
>
>>.>'0 x xt   ''   ffbff-	8/DERZZ 1b'B7!3288D	 '3h	5JK"$** 2q'B7!3288D	 %y1Iy3IJ"$** 2r(RG!4BHHE	 #'3i5IJ"$** 1b'B7!3288D	 &'3i5KL"$** 2q'B7!3288D	  '3h	5JK"$** 2r(RH!5RXXF	 !(*5)7LM"$** 2q'B7!3288D	 &'3h	5JK"$** 2r(RG!4BHHE	 ! ffbff-	8/DERZZ 1b'B7!3288D	aYt Hw\	
^~! !^~!F   ''	
'c 'c ''(;#z
(K&"*"*"1+f#*J>.~8@>&*@*0*@!5F'$'$'&'&'$'*'$'$   ''	


&

&   ''(LM0 N0,;*;8c1J!   ''U^ff-	9/EtL$se-GN$/1EtL		

7
7   '' '" /2A "rS#JR1 &rS#Je5 ()?@"NOD"NOD I&	 L+++
 
 L+++
 
 k*-/KLA $$V,{D	
FN
OFN
6   '' H(#	 12PQ $&9:	 @*
	
6 __!L	77<	7 __!L22rJ   r   __main__ro   )	verbosity)b__doc__r  r  r  r=   
contextlibr   	functoolsr   ior   osr   textwrapr   typingr	   r
   r	  rx   r  r  numpy.testingr   onnxr   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    r!   r"   onnx.numpy_helperr#   r$   r%   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_celur/   onnx.reference.ops.op_col2imr0   r1   onnx.reference.ops.op_convr2   r3   onnx.reference.ops_optimizedrv  .onnx.reference.ops_optimized.op_conv_optimizedr4   rX   r5   r7   rH   rO   rT   r]   rl   r   r  r   TestCaser   r  mainr   rJ   rB   <module>r     s^     
  &     "    ) X X K $ (     W V - 4 & G 5 D . B > V  #6*H##NO '*
148( $
0(+\"	"S/" }" 3-	"
 c]" ZZ"*CK2X.. CK2LV zMMA rJ   