
    Si                    f    S SK Jr  S SKrS SKJr   " S S\5      r " S S\5      r " S S	\5      rg)
    )annotationsN)OpRunc                  J    \ rS rSrS rS rS rS r          S	S jrSr	g)
	CommonRNN   c                   [         R                  " XU5        U R                  S;   a  SU l        O2U R                  S:X  a  SU l        O[	        SU R                  < S35      eU R
                  b<  [        U R
                  5      U R                  :w  a  [	        SU R                   S35      eU R                  b<  [        U R                  5      U R                  :w  a  [	        SU R                   S35      eU R                  U R                  S	   U R
                  b(  [        U R
                  5      S	:  a  U R
                  S	   OS U R                  b(  [        U R                  5      S	:  a  U R                  S	   OS 5      U l
        [        U R                  5      S:  a  U R                  U R                  S   U R
                  b(  [        U R
                  5      S:  a  U R
                  S   OS U R                  b(  [        U R                  5      S:  a  U R                  S   OS 5      U l        [        UR                  5      U l        g )
N)forwardreverse   bidirectional   zUnknown direction .z;activation_alpha must have the same size as num_directions=z:activation_beta must have the same size as num_directions=r   )r   __init__	directionnum_directionsRuntimeErroractivation_alphalenactivation_beta
choose_actactivationsf1f2output	n_outputs)self	onnx_node
run_paramss      X/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/reference/ops/op_rnn.pyr   CommonRNN.__init__   s   t
3>>33"#D^^."#D!3DNN3EQGHH !!-D))*d.A.AAMdNaNaMbbcd    ,D(()T-@-@@LTM`M`Laabc  //Q ((4T=R=R9SVW9W %%a( ''3D<P<P8QTU8U $$Q'
 t 1$oo  # ,,8D112Q6 ))!,  ++7D001A5 ((+ DG Y--.    c                d   ^^ US;   a  U R                   $ US;   a  UU4S j$ [        SU< S35      e)N)Tanhtanh)Affineaffinec                   > U T-  T-   $ N )xalphabetas    r   <lambda>&CommonRNN.choose_act.<locals>.<lambda>H   s    QY-r!   zUnknown activation function r   )_f_tanhr   )r   namer+   r,   s     ``r   r   CommonRNN.choose_actD   s:    ##<<''--9$CDDr!   c                .    [         R                  " U5      $ r(   )npr$   )r   r*   s     r   r/   CommonRNN._f_tanhK   s    wwqzr!   c           
     (   / nUn[         R                  " XR                  S   SS9 H  nU R                  [         R                  " U[         R
                  " U5      5      [         R                  " U[         R
                  " U5      5      -   [         R                  " [         R                  " US5      6 -   5      n	UR                  U	5        U	nM     [         R                  " U5      n
U R                  S:X  a  [         R                  " U
S5      nWUS   4$ )Nr   axisr   r   )r3   splitshaper   dot	transposeaddappendconcatenater   expand_dims)r   XRBWH_0h_listH_tr*   Hconcatenatedr   s               r   _stepCommonRNN._stepN   s    !WWQZa0Aq",,q/*&&bll1o./&&"((1a.)*A
 MM!C 1 ~~f-!#^^L!4Fvbz!!r!   Nc                   UR                   S   U l        U R                  S:X  Ga  [        R                  " USS9n[        R                  " USS9nUb  [        R                  " USS9nUb  [        R                  " USS9nUb  [        R                  " USS9nUR                   S   nUR                   S   nUS:X  a  UO[        R                  " USS5      nUb  UO![        R
                  " SU-  UR                  S9nUb  UO[        R
                  " X4UR                  S9nUnUnO1[        SU R                   SU R                  R                  < S	35      eU R                  XXBU5      u  nnUS:X  a(  [        R                  " U/ S
Q5      nUS S 2S S 2SS S 24   nUR                  UR                  5      nU R                  S:X  a  U4$ UU4$ )Nr   r   r6   r8   r   )dtypezUnsupported value z! for num_directions and operator r   )r   r   r      )r:   r   r3   squeezeswapaxeszerosrM   NotImplementedError	__class____name__rJ   r<   astyper   )r   rA   rD   rB   rC   sequence_lens	initial_hr   r   r   clipr   hidden_sizelayout
batch_sizebh_0rE   YY_hs                       r   _runCommonRNN._run^   s   "  ggaj!#

11%A

11%A}JJqq)( "

=q A$JJyq9	''"+KJq[bkk!Q&:A][(PA ( XXz7qwwG  AC%$T%8%8$99Z[_[i[i[r[rZuuvw  A!,3Q;Q-AAq"aK.CHHQWW~~*t8C8r!   )r   r   r   r   )
NNNNNNNNNN)
rT   
__module____qualname____firstlineno__r   r   r/   rJ   r`   __static_attributes__r)   r!   r   r   r      s=    6/pE"* 59r!   r   c                      \ rS rSrSrg)RNN_7   r)   NrT   rb   rc   rd   re   r)   r!   r   rg   rg          r!   rg   c                      \ rS rSrSrg)RNN_14   r)   Nri   r)   r!   r   rl   rl      rj   r!   rl   )	
__future__r   numpyr3   onnx.reference.op_runr   r   rg   rl   r)   r!   r   <module>rq      s7    #  'H9 H9V	I 		Y 	r!   