
    Si                    n    S SK Jr  S SK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)
    )annotations)AnyN)Base)expectc                  2    \ rS rSrSS jrSS jrS	S jrSrg)
	RNNHelper   c                   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R                  5        H#  u  pX:w  d  M  [        R
                  " USS
9X'   M%     X   R                  S   nX   R                  S	   nUR                  US5      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        UU l        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itemsnpsqueezegetswapaxeszerosfloat32r   r   r   r   H_0LAYOUTNotImplementedError)selfparamsr   r   r   r   r!   r"   required_inputsikvhidden_size
batch_sizer   xbh_0s                     ^/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/rnn.py__init__RNNHelper.__init__   sy   ) A;>":1# >>; ! %SVn2215!#6 "

11 5FI ' !)//"-K+JZZ*F	Aq[bkk!Q&:A ; 	XXa+oRZZ@  = XXz7rzzJ  FYDFYDFDFDH K &''    c                .    [         R                  " U5      $ )N)r   tanh)r$   r,   s     r/   fRNNHelper.f?   s    wwqzr2   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   splitr5   dot	transposer   r   addr   appendconcatenater"   )r$   
seq_lengthr*   r+   Yh_listH_tr,   HconcatenatedY_hs              r/   stepRNNHelper.stepB   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r2   )r   r!   r"   r   r   r   r   N)r%   r   returnNone)r,   
np.ndarrayrI   rK   )rI   ztuple[np.ndarray, np.ndarray])__name__
__module____qualname____firstlineno__r0   r5   rG   __static_attributes__ r2   r/   r   r      s    -(^r2   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)	RNNa   c                 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      皙?rS   r   r   r    rF   inputsoutputsr*   r   test_simple_rnn_defaultsra   rb   namer   arrayastyper    onnxhelper	make_nodeonesr   rG   r   )
input
input_sizer*   weight_scalenoder   r   rnn_rF   s
             r/   export_defaultsRNN.export_defaultsb   s    C:SzC:>?@GG

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

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

+,+		
r2   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rV   rW   rX   rY   rZ   r[   g      @g       @g      "@r8      r]   rS   r   r   r   r   r_   rF   r`   r   r   !test_simple_rnn_with_initial_biasrd   )r   rg   rh   r    ri   rj   rk   rl   r   r?   r   rG   r   )rm   rn   r*   custom_biasro   rp   r   r   W_BR_Br   rq   rr   rF   s                 r/   export_initial_biasRNN.export_initial_biasz   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		
r2   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 )Nrv   rw   rx   )g      $@g      &@g      (@)g      *@g      ,@g      .@)g      0@g      1@g      2@r8   ry   rS   rz   r_   rF   r`   r   r   test_rnn_seq_lengthrd   )r   rg   rh   r    ri   rj   rk   randomrandnr?   r   rG   r   )rm   rn   r*   rp   r   r   r}   r~   r   rq   rr   rF   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

+,&		
r2   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 )NrV   rW   rX   rY   rZ   r[   r   r\   g      ?r   rS   r^   rA   rF   )ra   rb   r*   r   )r   r   r   r   test_simple_rnn_batchwiserd   rf   )rm   rn   r*   ro   r   rp   r   r   rq   rA   rF   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,		
r2   rQ   N)rI   rJ   )
rL   rM   rN   rO   staticmethodrs   r   r   r   rP   rQ   r2   r/   rS   rS   a   sR    
 
.  
  
D !
 !
F 
 
r2   rS   )
__future__r   typingr   numpyr   ri   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   rS   rQ   r2   r/   <module>r      s4    #    , .O Od{
$ {
r2   