
    h                     f    S SK JrJr  S SKrS SKrS SKJr  S SKJ	r	   " S S5      r
 " S S\5      rg)	    )AnyTupleN)Base)expectc                       \ rS rSrS\SS4S jrS\R                  S\R                  4S jrS\	\R                  \R                  4   4S jr
S	rg)
	RNNHelper   paramsreturnNc                    SnSnSnSnSnSnX#U/nU H  n	X;   a  M
   SU	 35       e   U[        U5         R                  S   U l        U R                  S	:X  Ga  U H#  n
X:w  d  M
  [        R                  " X   SS
9X'   M%     X   R                  S   nX   R                  S	   nXq;   a  X   OSnX   nUS:X  a  UO[        R
                  " USS	5      nXQ;   a  X   O%[        R                  " SU-  [        R                  S9nXa;   a  X   O#[        R                  " X4[        R                  S9nXl        X   U l	        X   U l
        Xl        UU l        Xl        g [        5       e)NXWRB	initial_hlayoutzMissing Required Input: r      axis   )dtype)strshapenum_directionsnpsqueezeswapaxeszerosfloat32r   r   r   r   H_0LAYOUTNotImplementedError)selfr
   r   r   r   r   r!   r"   required_inputsikhidden_size
batch_sizer   xbh_0s                    Y/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/rnn.py__init__RNNHelper.__init__   so   ) A;>":1# >>; ! %SVn2215!#6 "

691 =FI  !)//"-K+J'-'7V^QF	Aq[bkk!Q&:A ; 	XXa+oRZZ@  = XXz7rzzJ  FYDFYDFFDH K &''    r*   c                 .    [         R                  " U5      $ )N)r   tanh)r$   r*   s     r-   fRNNHelper.f>   s    wwqzr0   c           
         U R                   R                  S   nU R                  R                  S   nU R                   R                  S   n[        R                  " XR
                  X2/5      n/ nU R                  n[        R                  " U R                   U R                   R                  S   SS9 H  nU R                  [        R                  " U[        R                  " U R                  5      5      [        R                  " U[        R                  " U R                  5      5      -   [        R                  " [        R                  " U R                  S5      6 -   5      nUR                  U5        UnM     [        R                  " U5      n	U R
                  S:X  a  XS S 2SS S 2S S 24'   U R                   S:X  a  US   n
XJ4$ [        R                  " U/ SQ5      nUS S 2S S 2SS S 24   n
XJ4$ )Nr   r   r   r   r   )r   r   r      )r   r   r!   r   emptyr   splitr3   dot	transposer   r   addr   appendconcatenater"   )r$   
seq_lengthr(   r)   Yh_listH_tr*   HconcatenatedY_hs              r-   stepRNNHelper.stepA   su   VV\\!_
hhnnR(VV\\!_
HHj"5"5zOPhh$&&$&&,,q/:Aq",,tvv./&&bll466234&&"((4661-./A
 MM!C ; ~~f-!#(aAqjM;;!B%C
 v Q-AAq"aK.Cvr0   )r   r!   r"   r   r   r   r   )__name__
__module____qualname____firstlineno__r   r.   r   ndarrayr3   r   rE   __static_attributes__ r0   r-   r   r      sO    -( -( -(^2:: "** eBJJ

23 r0   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)	RNN`   Nc                  B   [         R                  " SS/SS/SS///5      R                  [         R                  5      n SnSnS	n[        R
                  R                  S
/ SQSS/US9nU[         R                  " SX!45      R                  [         R                  5      -  nU[         R                  " SX"45      R                  [         R                  5      -  n[        XUS9nUR                  5       u  p[        UXU/U	R                  [         R                  5      /SS9  g )N      ?       @      @      @      @      @r      皙?rO   r   r   r    rD   inputsoutputsr(   r   test_simple_rnn_defaultsr]   r^   namer   arrayastyper    onnxhelper	make_nodeonesr   rE   r   )
input
input_sizer(   weight_scalenoder   r   rnn_rD   s
             r-   export_defaultsRNN.export_defaultsa   s    C:SzC:>?@GG

S
{{$$/B;K % 
 277A{#?@GG

SS277A{#@AHHTT%*a=ZZ

+,+		
r0   c                  L   [         R                  " / SQ/ SQ/ SQ//5      R                  [         R                  5      n SnSnSnSn[        R
                  R                  S/ SQS	S
/US9nU[         R                  " SX!45      R                  [         R                  5      -  nU[         R                  " SX"45      R                  [         R                  5      -  nU[         R                  " SU45      R                  [         R                  5      -  n[         R                  " SU45      R                  [         R                  5      n	[         R                  " X4SS9n
[        XXzS9nUR                  5       u  p[        UXXz/UR                  [         R                  5      /SS9  g )NrR   rS   rT   rU   rV   rW   g      @g       @g      "@r6      rY   rO   r   r   r   r   r[   rD   r\   r   r   !test_simple_rnn_with_initial_biasr`   )r   rc   rd   r    re   rf   rg   rh   r   r=   r   rE   r   )ri   rj   r(   custom_biasrk   rl   r   r   W_BR_Br   rm   rn   rD   s                 r-   export_initial_biasRNN.export_initial_biasy   sZ   ?O_MNOVVJJ
 
{{$$'K#	 % 
 277A{#?@GG

SS277A{#@AHHTT BGGQ$45<<RZZHHhh;'(//

;NNC:A.%/a#ZZ

+,4		
r0   c                     [         R                  " / SQ/ SQ/ SQ// SQ/ SQ/ SQ//5      R                  [         R                  5      n SnSn[        R
                  R                  S	/ S
QSS/US9n[         R                  R                  SX!5      R                  [         R                  5      n[         R                  R                  SX"5      R                  [         R                  5      n[         R                  R                  SU5      R                  [         R                  5      n[         R                  R                  SU5      R                  [         R                  5      n[         R                  " Xg4SS9n[        XXXS
9n	U	R                  5       u  p[        UXXX/UR                  [         R                  5      /SS9  g )Nrr   rs   rt   )g      $@g      &@g      (@)g      *@g      ,@g      .@)g      0@g      1@g      2@r6   ru   rO   rv   r[   rD   r\   r   r   test_rnn_seq_lengthr`   )r   rc   rd   r    re   rf   rg   randomrandnr=   r   rE   r   )ri   rj   r(   rl   r   r   ry   rz   r   rm   rn   rD   s               r-   export_seq_lengthRNN.export_seq_length   sW    /?C#%79KL

 &
 	 
{{$$'K#	 % 
 IIOOA{7>>rzzJIIOOA{8??

K iiooa-44RZZ@iiooa-44RZZ@NNC:A.%/a#ZZ

+,&		
r0   c                     [         R                  " SS//SS//SS///5      R                  [         R                  5      n SnSnS	nS
n[        R
                  R                  S/ SQSS/UUS9nU[         R                  " S
X!45      R                  [         R                  5      -  nU[         R                  " S
X"45      R                  [         R                  5      -  n[        XXtS9nUR                  5       u  p[        UXU/U	R                  [         R                  5      U
R                  [         R                  5      /SS9  g )NrR   rS   rT   rU   rV   rW   r   rX   g      ?r   rO   rZ   r?   rD   )r]   r^   r(   r   )r   r   r   r   test_simple_rnn_batchwiser`   rb   )ri   rj   r(   rk   r   rl   r   r   rm   r?   rD   s              r-   export_batchwiseRNN.export_batchwise   s   C:,#sSzlCDKKBJJW
{{$$"%L# % 
 277A{#?@GG

SS277A{#@AHHTT%9a=XXbjj)3::bjj+AB,		
r0   rM   )r   N)
rG   rH   rI   rJ   staticmethodro   r{   r   r   rL   rM   r0   r-   rO   rO   `   sR    
 
.  
  
D !
 !
F 
 
r0   rO   )typingr   r   numpyr   re   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   rO   rM   r0   r-   <module>r      s1   
    , .O Od{
$ {
r0   