
    h                     P    S SK Jr  S SKrS SKJr   " S S\5      r " S S\5      rg)    )TupleN)OpRunc                      \ rS rSrS rS\R                  S\R                  4S jrS\R                  S\R                  4S jrS\R                  S\R                  4S jr	S\R                  S	\R                  S
\R                  S\R                  S\R                  S\R                  S\R                  S\
S\\R                  \R                  4   4S jr             SS jrSrg)
CommonLSTM   c                 t    [         R                  " XU5        [        UR                  5      U l        SU l        g )N   )r   __init__lenoutput	n_outputsn_gatesself	onnx_node
run_paramss      T/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/reference/ops/op_lstm.pyr
   CommonLSTM.__init__   s)    t
3Y--.    xreturnc                 <    SS[         R                  " U* 5      -   -  $ )N   )npexpr   r   s     r   fCommonLSTM.f   s    Ar
N##r   c                 .    [         R                  " U5      $ Nr   tanhr   s     r   gCommonLSTM.g       wwqzr   c                 .    [         R                  " U5      $ r    r!   r   s     r   hCommonLSTM.h   r%   r   XRBWH_0C_0Pnum_directionsc	                 P   UR                   S   n	UR                   S   n
UR                   S   n[        R                  " XX/5      n/ n[        R                  " US5      u  pnUnUn[        R                  " XR                   S   SS9 GH+  n[        R                  " U[        R
                  " U5      5      [        R                  " U[        R
                  " U5      5      -   [        R                  " [        R                  " US5      6 -   n[        R                  " USS5      u  nnnnU R                  UUU-  -   5      nU R                  UUU-  -   5      nU R                  U5      nUU-  UU-  -   nU R                  UUU-  -   5      nUU R                  U5      -  nUR                  U5        Un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      )r5   r   r   r	   )shaper   emptysplitdot	transposeaddr   r#   r'   appendconcatenatelayout)r   r)   r*   r+   r,   r-   r.   r/   r0   
seq_lengthhidden_size
batch_sizeYh_listp_ip_op_fH_tC_tr   gatesior   cCHconcatenatedY_hs                                r   _stepCommonLSTM._step   s    WWQZ
iimWWQZ
HHj*JK((1a.3!WWQZa0Aq",,q/*&&bll1o./&&"((1a.)* 
 %B/JAq!Qq39}%Aq39}%Aq	AC!a%Aq37{#ADFF1IAMM!CC 1" ~~f-Q(AaAqjM;;!B%C
 #v Q-AAq"aK.C#vr   Nc                    SnSnUR                   S   nUS:X  Gaj  [        R                  " USS9n[        R                  " USS9nUbA  [        UR                   5      S:  a(  UR                   S   S:X  a  [        R                  " USS9nUbA  [        UR                   5      S:  a(  UR                   S   S:X  a  [        R                  " USS9nUbA  [        UR                   5      S:  a(  UR                   S   S:X  a  [        R                  " USS9nUbA  [        UR                   5      S:  a(  UR                   S   S:X  a  [        R                  " USS9nUbA  [        UR                   5      S:  a(  UR                   S   S:X  a  [        R                  " USS9nUR                   S   nUR                   S   nU R                  S:w  a  [        R
                  " USS5      nUc)  [        R                  " SU-  U-  [        R                  S9nUc&  [        R                  " UU-  [        R                  S9nUc%  [        R                  " UU4[        R                  S9nUc%  [        R                  " UU4[        R                  S9nO([        S	U< S
U R                  R                  < S35      eU R                  XXBXgU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$ )Nr6   r	   r   r   r3   r2   r5   )dtypezUnsupported value z! for num_directions and operator .)r0   )r7   r   squeezer   r?   swapaxeszerosfloat32NotImplementedError	__class____name__rR   astyperU   r   )r   r)   r,   r*   r+   sequence_lens	initial_h	initial_cr/   activation_alphaactivation_betaactivationsclip	directionrA   input_forgetr?   r   number_of_peepholesr0   rB   rC   rQ   s                          r   _runCommonLSTM._runN   s   ( Q

11%A

11%A}QWW!1aggajAoJJqq))++,q0!''*a/ "

=q A%	(1,OOA&!+JJyq9	%	(1,OOA&!+JJyq9	}QWW!1aggajAoJJqq)''"+KJ{{aKK1a(yHHQ[;6bjjIyHH0;>bjjQ HHj+%>bjjQ	 HHj+%>bjjQ	%$^$6 7  $ 7 7:!= 
 !	a  
3 HHQWW~~*tHCJJqww4G0HHr   )r   r   )NNNNNNNNNNNNN)r]   
__module____qualname____firstlineno__r
   r   ndarrayr   r#   r'   intr   rR   ri   __static_attributes__ r   r   r   r      s   
$2:: $"** $2:: "** 2:: "** 0::0 ::0 ::	0
 ::0 ZZ0 ZZ0 ::0 0 
rzz2::%	&0n 
#JIr   r   c                       \ rS rSrS rSrg)LSTM   c                 0    [         R                  XU5        g r    )r   r
   r   s      r   r
   LSTM.__init__   s    DZ8r   rq   N)r]   rk   rl   rm   r
   rp   rq   r   r   rs   rs      s    9r   rs   )typingr   numpyr   onnx.reference.op_runr   r   rs   rq   r   r   <module>rz      s-      'KI KI\9: 9r   