
    hy                     V    S SK rS SKrS SKJr  S SKJr  SS jrS	S jr " S S\5      r	g)
    N)Base)expectc                    [        U R                  5      nSUS-
  -  nUR                  " S/UQ76 nUR                  " S/UQ76 nUR                  " S/UQ76 nUR                  " S/UQ76 nXU-
  -  [        R                  " XE-   5      -  U-   $ )N)      )lenshapereshapenpsqrt)xsbiasmeanvarepsilondims_xdim_oness           _/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/batchnorm.py_batchnorm_test_moder      s    \Fvz"H			" x A<<&X&D<<&X&D
++b
$8
$CD>BGGCM22T99    c           	      X   [        [        R                  " [        R                  " [	        U R
                  5      5      S5      5      nU R                  US9nU R                  US9n	X5-  USU-
  -  -   n
XE-  U	SU-
  -  -   n[        XX(XS9nUR                  [        R                  5      X4$ )Nr   )axis)r   )tupler   deletearanger	   r
   r   r   r   astypefloat32)r   r   r   r   r   momentumr   r   
saved_mean	saved_varoutput_mean
output_varys                r   _batchnorm_training_moder&      s    299S\2A67DT"J4 I/J!h,$??K)q8|"<<JQ4YPA88BJJ88r   c                   <    \ rS rSr\SS j5       r\SS j5       rSrg)BatchNormalization    Nc                  6   [         R                  R                  SSSS5      R                  [         R                  5      n [         R                  R                  S5      R                  [         R                  5      n[         R                  R                  S5      R                  [         R                  5      n[         R                  R                  S5      R                  [         R                  5      n[         R                  R                  S5      R                  [         R                  5      n[        XX#U5      R                  [         R                  5      n[        R                  R                  S/ SQS/S9n[        UXX#U/U/S	S
9  [         R                  R                  SSSS5      R                  [         R                  5      n [         R                  R                  S5      R                  [         R                  5      n[         R                  R                  S5      R                  [         R                  5      n[         R                  R                  S5      R                  [         R                  5      n[         R                  R                  S5      R                  [         R                  5      nSn[        XX#XG5      R                  [         R                  5      n[        R                  R                  S/ SQS/US9n[        UXX#U/U/SS
9  g )Nr            r(   r   r   r   r   r   r%   )inputsoutputstest_batchnorm_exampler/   r0   name{Gz?)r/   r0   r   test_batchnorm_epsilon)r   randomrandnr   r   randr   onnxhelper	make_noder   )r   r   r   r   r   r%   noder   s           r   exportBatchNormalization.export!   s$    IIOOAq!Q'..rzz:IIOOA%%bjj1yyq!((4yyq!((4iinnQ&&rzz2 t37>>rzzJ{{$$ 4E % 
 	$c*C)		
 IIOOAq!Q'..rzz:IIOOA%%bjj1yyq!((4yyq!((4iinnQ&&rzz2 t3@GG

S{{$$ 4E	 % 
 	$c*C)		
r   c            	         [         R                  R                  SSSS5      R                  [         R                  5      n [         R                  R                  S5      R                  [         R                  5      n[         R                  R                  S5      R                  [         R                  5      n[         R                  R                  S5      R                  [         R                  5      n[         R                  R                  S5      R                  [         R                  5      nSn[        XX#U5      u  pgn[        R                  R                  S/ SQ/ SQUS	9n	[        U	XX#U/XgU/S
S9  [         R                  R                  SSSS5      R                  [         R                  5      n [         R                  R                  S5      R                  [         R                  5      n[         R                  R                  S5      R                  [         R                  5      n[         R                  R                  S5      R                  [         R                  5      n[         R                  R                  S5      R                  [         R                  5      nSnSn
Sn[        XX#XJU5      u  pgn[        R                  R                  S/ SQ/ SQUUS9n	[        U	XX#U/XgU/SS9  g )Nr   r+   r,   r-   r   r(   r.   )r%   r#   r$   )r/   r0   training_mode$test_batchnorm_example_training_moder2   ?r4   )r/   r0   r   r@   $test_batchnorm_epsilon_training_mode)r   r6   r7   r   r   r8   r&   r9   r:   r;   r   )r   r   r   r   r   r@   r%   r#   r$   r<   r    r   s               r   export_trainBatchNormalization.export_trainQ   s1    IIOOAq!Q'..rzz:IIOOA%%bjj1yyq!((4yyq!((4iinnQ&&rzz2 %=aDPS%T"
{{$$ 46'	 % 
 	$c*Z07		
 IIOOAq!Q'..rzz:IIOOA%%bjj1yyq!((4yyq!((4iinnQ&&rzz2%=$cW&
"
 {{$$ 46' % 
 	$c*Z07		
r    )returnN)__name__
__module____qualname____firstlineno__staticmethodr=   rD   __static_attributes__rF   r   r   r(   r(       s)    -
 -
^ 6
 6
r   r(   )h㈵>)rB   rN   )
numpyr   r9   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   r&   r(   rF   r   r   <module>rR      s+   
   , .:9h
 h
r   