
    h                     D    S SK rS SKJr   " S S\5      r " S S\5      rg)    N)OpRunc                   L    \ rS rSrS rS rS rS r           S	S jrSr	g)
	CommonGRU   c                 t    [         R                  " XU5        [        UR                  5      U l        SU l        g )N   )r   __init__lenoutput	n_outputsnumber_of_gatesself	onnx_node
run_paramss      S/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/reference/ops/op_gru.pyr	   CommonGRU.__init__   s*    t
3Y--.     c                 <    SS[         R                  " U* 5      -   -  $ )N   )npexpr   xs     r   fCommonGRU.f   s    Ar
N##r   c                 .    [         R                  " U5      $ N)r   tanhr   s     r   gCommonGRU.g   s    wwqzr   c                    UR                   S   nUR                   S   nUR                   S   n	[        R                  " XvX/5      n
/ n[        R                  " US5      u  pn[        R                  " US5      u  nnn[        R                  " US5      u  nnnnnn[        R                  " [        R
                  " X45      5      n[        R                  " [        R
                  " UU45      5      n[        R                  " [        R
                  " UU45      [        R
                  " UU45      5      nUn[        R                  " XR                   S   SS9 GH  n[        R                  " UU5      [        R                  " UU5      -   U-   n[        R                  " USS5      u  nnU R                  U5      nU R                  U5      nU R                  [        R                  " U[        R                  " U5      5      [        R                  " UU-  [        R                  " U5      5      -   U-   U-   5      n U R                  [        R                  " U[        R                  " U5      5      U[        R                  " U[        R                  " U5      5      U-   -  -   U-   5      n!U R                  (       a  U!OU n"SU-
  U"-  UU-  -   n#UR                  U#5        U#nGM     [        R
                  " U5      n$US:X  a  U$U
S S 2SS S 2S S 24'   U R                  S:X  a	  U
S   n%U
U%4$ [        R                  " U
/ SQ5      n
U
S S 2S S 2SS S 24   n%U
U%4$ )	Nr   r   r      axis   )r'   r   r   r   )shaper   emptysplit	transposeconcatenateadddotr   r    linear_before_resetappendlayout)&r   XRBWH_0num_directions
seq_lengthhidden_size
batch_sizeYh_listw_zw_rw_hr_zr_rr_hw_bzw_brw_bhr_bzr_brr_bhgates_wgates_rgates_bH_tr   gateszr	h_defaulth_linearhHconcatenatedY_hs&                                         r   _stepCommonGRU._step   s   WWQZ
iimWWQZ
HHj*JK((1a.3((1a.c3/1xx1~,tT4t,,r~~sj9:,,r~~sCj9:&&t5r~~tTl7ST!WWQZa0AFF1g&W)==GE88E1b)DAqq	Aq	Aq",,s+,&&S",,s"345 I vvq",,s+,rvvc2<<#45<=>H
 !44)AQ!a#g%AMM!C' 1* ~~f-Q(AaAqjM;;!B%C
 #v Q-AAq"aK.C#vr   Nc           	      Z   UR                   S   nU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 R
                  -  U-  UR                  S9nUb  UO [        R                  " UU4UR                  S9nUnUnO'[        SU SU R                  R                  < S	35      eU R                  XXBUUS
9u  nnUR                  UR                  5      nU R                  S:X  a  U4$ UUR                  UR                  5      4$ )Nr   r   r%   r#   r'   )dtypezUnsupported value z! for num_directions and operator .)r7   )r(   r   squeezeswapaxeszerosr   rY   NotImplementedError	__class____name__rV   astyper   )r   r2   r5   r3   r4   sequence_lens	initial_hactivation_alphaactivation_betaactivationsclip	directionr9   r1   r/   r7   r:   bh_0r6   r;   rU   s                         r   _runCommonGRU._runH   s   $ Q

11%A

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

=q A$JJyq9	''"+KJq[bkk!Q&:A = XXa$"6"66DAGGT  ( XXz;7qwwG  AC%$^$44U>>**-Q0 
 A!NK3HHQWW~~*tHCJJqww4G0HHr   )r   r   )NNNNNNNNNNN)
r`   
__module____qualname____firstlineno__r	   r   r    rV   rk   __static_attributes__ r   r   r   r      s@    !
$/l  7Ir   r   c                       \ rS rSrS rSrg)GRU   c                 0    [         R                  XU5        g r   )r   r	   r   s      r   r	   GRU.__init__   s    4J7r   rq   N)r`   rm   rn   ro   r	   rp   rq   r   r   rs   rs      s    8r   rs   )numpyr   onnx.reference.op_runr   r   rs   rq   r   r   <module>ry      s*     'tI tIn8) 8r   