
    h                     R    S SK rS SKrS SKJr  S SKJr  SS jrS r " S S\5      r	g)	    N)Base)expectc                 f   U R                   n[        U5      nUS:  a  X6-   nXc-
  nUSU SU-  -   nSn	Sn
[        U5       H  nX:  a	  XU   -  n	M  XU   -  n
M     [        R                  " X	U
45      n[        R
                  " USSS9U
-  nX-
  nX-  n[        R
                  " USSS9U
-  nUU-   n[        R                  " U5      n[        R                  " U5      nUU-  n[        R                  " UU5      U-  U-   n[        R                  " X5      n[        R                  " UU5      nUUU4$ )Nr   )   r   T)axiskeepdims)shapelenrangenpreshapesumsqrt
reciprocal)XWBr   epsilonX_shapeX_rankunsqueezed_rankreduction_shape
row_number
col_numberix_matx_meanx_diffx_squared_diffvariancevariance_epsstd_devinv_std_devy_matYX_meanX_inv_std_devs                           h/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/layernormalization.py_layer_normalizationr)      sA   ggG\Fax }mOao(>>O JJ6]8!*$J!*$J	  JJqz23EVVED1J>F^F_Nvvn1t<zIHg%Lggl#G--(K[ E 	

5'"Q&*A ZZ0FJJ{O<Mfm##    c                 4    [        U 5      nUS:  a  X-   nXS  $ )Nr   )r
   )r   r   r   s      r(   calculate_normalized_shaper,   =   s#    \Fax}5>r*   c                   d    \ rS rSr\SS j5       r\SS j5       r\SS j5       r\SS j5       rSr	g)	LayerNormalizationD   Nc                  :  ^ [         R                  R                  SSSS5      R                  [         R                  5      mS[
        SS 4U4S jjn [        [        TR                  5      5       H)  nU " U5        U " U[        TR                  5      -
  5        M+     g )N            r   returnc                   > [        T	R                  U 5      n[        R                  R                  " U6 R                  [        R                  5      n[        R                  R                  " U6 R                  [        R                  5      n[        T	X#U 5      u  pEn[        R                  R                  S/ SQ/ SQU S9nU S:  a  SU *  3nOSU  3n[        UT	X#/XEU/US9  g )	Nr.   r   r   r   r%   Mean	InvStdDevinputsoutputsr   r   *test_layer_normalization_4d_axis_negative_ test_layer_normalization_4d_axisr<   r=   namer,   r	   r   randomrandnastypefloat32r)   onnxhelper	make_noder   
r   normalized_shaper   r   r%   meanr#   noderA   r   s
            r(   case'LayerNormalization.export.<locals>.caseI   s    9!''4H		!1299"**EA		!1299"**EA#71#F A[;;(($&2	 ) D axCTE7K9$@4A	A[3IPTUr*   	r   rC   rD   rE   rF   intr   r
   r	   rN   r   r   s     @r(   exportLayerNormalization.exportE   su    IIOOAq!Q'..rzz:	Vs 	Vt 	V( s177|$AGS\!" %r*   c                     [         R                  R                  SSSS5      R                  [         R                  5      n [        U R                  S5      n[         R                  R                  " U6 R                  [         R                  5      n[         R                  R                  " U6 R                  [         R                  5      n[        XU5      u  pEn[        R                  R                  S/ SQ/ SQS	9n[        UXU/XEU/S
S9  g )Nr1   r2   r3   r4   r.   r7   r8   )r<   r=   %test_layer_normalization_default_axisr@   )r   rC   rD   rE   rF   r,   r	   r)   rG   rH   rI   r   )r   rK   r   r   r%   rL   r#   rM   s           r(   export_default_axis&LayerNormalization.export_default_axisa   s    IIOOAq!Q'..rzz: 6aggrBIIOO-.55bjjAIIOO-.55bjjA3A!< {{$$ ". % 
 	!9k*8		
r*   c                  6  ^ [         R                  R                  SS5      R                  [         R                  5      mS[
        SS 4U4S jjn [        [        TR                  5      5       H)  nU " U5        U " U[        TR                  5      -
  5        M+     g )Nr2   r3   r   r5   c                   > [        T	R                  U 5      n[        R                  R                  " U6 R                  [        R                  5      n[        R                  R                  " U6 R                  [        R                  5      n[        T	X#U S9u  pEn[        R                  R                  S/ SQ/ SQU S9nU S:  a  SU *  3nOSU  3n[        UT	X#/XEU/US	9  g )
N)r   r.   r7   r8   r;   r   *test_layer_normalization_2d_axis_negative_ test_layer_normalization_2d_axisr@   rB   rJ   s
            r(   rN   )LayerNormalization.export2d.<locals>.case~   s    9!''4H		!1299"**EA		!1299"**EA#71d#K A[;;(($&2	 ) D axCTE7K9$@4A	A[3IPTUr*   rP   rR   s     @r(   export2dLayerNormalization.export2dz   sq    IIOOAq!((4	Vs 	Vt 	V( s177|$AGS\!" %r*   c                  @  ^^ Sm[         R                  R                  SSS5      R                  [         R                  5      mS[
        SS 4UU4S jjn [        [        TR                  5      5       H)  nU " U5        U " U[        TR                  5      -
  5        M+     g )Ng?r1   r2   r4   r   r5   c                   > [        T	R                  U 5      n[        R                  R                  " U6 R                  [        R                  5      n[        R                  R                  " U6 R                  [        R                  5      n[        T	X#U T
5      u  pEn[        R                  R                  S/ SQ/ SQU T
S9nU S:  a  SU *  S3nOSU  S3n[        UT	X#/XEU/US	9  g )
Nr.   r7   r8   )r<   r=   r   r   r   *test_layer_normalization_3d_axis_negative__epsilon test_layer_normalization_3d_axisr@   rB   )r   rK   r   r   r%   rL   r#   rM   rA   r   r   s            r(   rN   1LayerNormalization.export3d_epsilon.<locals>.case   s    9!''4H		!1299"**EA		!1299"**EA#71w#O A[;;(($&2 ) D axCTE7(S9$xH4A	A[3IPTUr*   rP   )rN   r   r   r   s     @@r(   export3d_epsilon#LayerNormalization.export3d_epsilon   s~    IIOOAq!$++BJJ7	Vs 	Vt 	V 	V( s177|$AGS\!" %r*    )r5   N)
__name__
__module____qualname____firstlineno__staticmethodrS   rX   r_   rg   __static_attributes__ri   r*   r(   r.   r.   D   sP    # #6 
 
0 # #6 # #r*   r.   )rV   gh㈵>)
numpyr   rG   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r)   r,   r.   ri   r*   r(   <module>rs      s,   
   , .-$`m# m#r*   