
    /jO                     |    d dl mZ d dlmZ d dlZd dlZd dlmZ d dl	m
Z
  G d d          Z G d d	e          ZdS )
    )annotations)AnyN)Base)expectc                  6    e Zd ZddZddZdd	Zdd
ZddZdS )
LSTMHelperparamsr   returnNonec                    d}d}d}d}d}d}d}d}	d	}
d
}|||g}|D ]}||v sJ d|             ||         j         d         | _        | j        dk    r|                                D ]$\  }}||k    rt          j        |d          ||<   %||         j         d         }||         j         d         }|                    |	d          }||         }|dk    r|nt          j        |dd          }||v r||         n%t          j        d|
z  |z  t          j                  }||v r||         n"t          j        ||z  t          j                  }||v r||         n!t          j        ||ft          j                  }||v r||         n!t          j        ||ft          j                  }|| _	        ||         | _
        ||         | _        || _        || _        || _        || _        || _        d S t#                      )NXWRB	initial_h	initial_cPlayout      zMissing Required Input: r      axis   )dtype)shapenum_directionsitemsnpsqueezegetswapaxeszerosfloat32r   r   r   r   r   H_0C_0LAYOUTNotImplementedError)selfr	   r   r   r   r   r&   r'   r   r(   number_of_gatesnumber_of_peepholesrequired_inputsikvhidden_size
batch_sizer   xbph_0c_0s                           e/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/backend/test/case/node/lstm.py__init__zLSTMHelper.__init__   sP   a)  	? 	?A;;; >1 > >;;;;$Qioa0!## 6 6166 "
11 5 5 5F1I )/"-K+JZZ**Fq	Aq[[bk!Q&:&:A ;; q		Xa/1K?rzRRR  ;; q		X1K?rzRRR  &== sXz;7rzJJJ  &== sXz;7rzJJJ  DFAYDFAYDFDFDFDHDH DKKK &'''    r3   
np.ndarrayc                8    ddt          j        |           z   z  S )Nr   )r    expr*   r3   s     r8   fzLSTMHelper.fO   s    Ar

N##r:   c                *    t          j        |          S Nr    tanhr>   s     r8   gzLSTMHelper.gR       wqzzr:   c                *    t          j        |          S rA   rB   r>   s     r8   hzLSTMHelper.hU   rE   r:   tuple[np.ndarray, np.ndarray]c                   | j         j        d         }| j        j        d         }| j         j        d         }t          j        || j        ||g          }g }t          j        | j        d          \  }}}| j        }	| j        }
t          j        | j         | j         j        d         d          D ]@}t          j	        |t          j
        | j                            t          j	        |	t          j
        | j                            z   t          j        t          j        | j        d           z   }t          j        |dd          \  }}}}|                     |||
z  z             }|                     |||
z  z             }|                     |          }||
z  ||z  z   }|                     |||z  z             }||                     |          z  }|                    |           |}	|}
Bt          j        |          }| j        dk    r||d d dd d d d f<   | j        dk    r	|d         }n)t          j
        |g d          }|d d d d dd d f         }||fS )	Nr   r   r   r   r   r   r   )r   r   r   r   )r   r   r&   r    emptyr   splitr   r'   dot	transposer   r   addr   r?   rD   rG   appendconcatenater(   )r*   
seq_lengthr1   r2   Yh_listp_ip_op_fH_tC_tr3   gatesr.   or?   cCHconcatenatedY_hs                        r8   stepzLSTMHelper.stepX   s>   V\!_
hnR(V\!_
Hj$"5z;OPP(461--c3hh$&$&,q/::: 	 	Aq",tv..//&bl4622334&"(461--./ 
 %B//JAq!Qq39}%%Aq39}%%Aq		AC!a%Aq37{##ADFF1IIAMM!CCC~f--!##(AaaaAAAqqqjM;!B%CCQ--AAAAqqq"aaaK.C#vr:   N)r	   r   r
   r   )r3   r;   r
   r;   )r
   rH   )__name__
__module____qualname__r9   r?   rD   rG   r`    r:   r8   r   r      sy        =( =( =( =(~$ $ $ $      & & & & & &r:   r   c                  n    e Zd Zedd            Zedd            Zedd            Zedd            ZdS )	LSTMr
   r   c                 |   t          j        ddgddgddggg                              t           j                  } d}d}d	}d
}t          j                            dg dddg|          }|t          j        d||z  |f                              t           j                  z  }|t          j        d||z  |f                              t           j                  z  }t          | ||          }|	                                \  }	}
t          || ||g|
                    t           j                  gd           d S )N      ?       @      @      @      @      @r   r   皙?r   rf   r   r   r    r_   inputsoutputsr1   r   test_lstm_defaultsrr   rs   namer    arrayastyper%   onnxhelper	make_nodeonesr   r`   r   )input
input_sizer1   weight_scaler+   noder   r   lstm_r_   s              r8   export_defaultszLSTM.export_defaults   sS   C:SzC:>?@@GG
SS
{$$???RK[ % 
 
 27+-z:
 

&

 27+-{;
 

&

 EQ!,,,31a=ZZ
++,%		
 	
 	
 	
 	
 	
r:   c                    t          j        g dg dg dgg                              t           j                  } d}d}d}d}d}t          j                            dg dd	d
g|          }|t          j        d||z  |f                              t           j                  z  }|t          j        d||z  |f                              t           j                  z  }|t          j        d||z  f                              t           j                  z  }	t          j        d||z  f                              t           j                  }
t          j	        |	|
fd          }t          | |||          }|                                \  }}t          || |||g|                    t           j                  gd           d S )N)rh   ri   rj   )rk   rl   rm   )      @       @g      "@r   r   rn   rf   )r   r   r   r   rp   r_   rq   r   test_lstm_with_initial_biasru   )r    rx   ry   r%   rz   r{   r|   r}   r$   rP   r   r`   r   )r~   r   r1   r   custom_biasr+   r   r   r   W_BR_Br   r   r   r_   s                  r8   export_initial_biaszLSTM.export_initial_bias   s   ???OOO___MNOOVVJ
 
 
{$$'''K#	 % 
 
 27+-z:
 

&

 27+-{;
 

&


 BGQ+(E$FGGNNJ
 
 
 h?[89::AA"*MMNC:q))EQ!q11131a#ZZ
++,.		
 	
 	
 	
 	
 	
r:   c                    t          j        g dg dgg                              t           j                  } d}d}d}d}d}t          j                            dg ddd	g|
          }|t          j        d||z  |f                              t           j                  z  }|t          j        d||z  |f                              t           j                  z  }t          j        dd|z  |z  f                              t           j                  }	t          j	        | j
        d         | j
        d                                       t           j                  }
t          j        d| j
        d         |f                              t           j                  }t          j        d| j
        d         |f                              t           j                  }|t          j        d||z  f                              t           j                  z  }t          | |||	|||          }|                                \  }}t          || |||	|
|||g|                    t           j                  gd           d S )N)rh   ri   rj   rk   )rl   rm   r   r   r   r   rn   rf   )r   r   r   r   sequence_lensr   r   r   rp   r_   rq   r   r   r   )r   r   r   r   r   r   r   test_lstm_with_peepholesru   )r    rx   ry   r%   rz   r{   r|   r}   r$   repeatr   int32r   r`   r   )r~   r   r1   r   r+   r,   r   r   r   r   seq_lensinit_hinit_cr   r   r   r_   s                    r8   export_peepholeszLSTM.export_peepholes   sl   ///1E1E1EFGHHOOJ
 
 
{$$WWWK#	 % 
 
 27+-z:
 

&

 27+-{;
 

&

 Ha_,{:;<<CCBJOO9U[^U[^<<CCBHMM1ek!nk:;;BB2:NN1ek!nk:;;BB2:NN27A':['H#IJJQQJ
 
 
 qAa6V
 
 
 31aHffa@ZZ
++,+		
 	
 	
 	
 	
 	
r:   c                    t          j        ddggddggddggg                              t           j                  } d}d}d	}d
}d}t          j                            dg dddg||          }|t          j        d||z  |f                              t           j                  z  }|t          j        d||z  |f                              t           j                  z  }t          | |||          }	|		                                \  }
}t          || ||g|
                    t           j                  |                    t           j                  gd           d S )Nrh   ri   rj   rk   rl   rm   r      g333333?r   r   rf   ro   rR   r_   )rr   rs   r1   r   )r   r   r   r   test_lstm_batchwiseru   rw   )r~   r   r1   r   r+   r   r   r   r   r   rR   r_   s               r8   export_batchwisezLSTM.export_batchwise   ss   C:,#sSzlCDDKKBJWW
{$$"??%L# % 
 
 27+-z:
 

&

 27+-{;
 

&

 EQ!F;;;31a=XXbj))3::bj+A+AB&		
 	
 	
 	
 	
 	
r:   N)r
   r   )ra   rb   rc   staticmethodr   r   r   r   rd   r:   r8   rf   rf      s        
 
 
 \
8 '
 '
 '
 \'
R *
 *
 *
 \*
X 
 
 
 \
 
 
r:   rf   )
__future__r   typingr   numpyr    rz   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   rf   rd   r:   r8   <module>r      s    # " " " " "            , , , , , , . . . . . .o o o o o o o odU
 U
 U
 U
 U
4 U
 U
 U
 U
 U
r:   