
    /j                    |    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                  &    e Zd ZddZddZdd
ZdS )	RNNHelperparamsr   returnNonec                .   d}d}d}d}d}d}|||g}|D ]}	|	|v sJ d|	             |t          |                   j        d         | _        | j        d	k    r0|                                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  t          j	                  }||v r||         n!t	          j        ||ft          j	                  }|| _
        ||         | _        ||         | _        || _        || _        || _        d S t!                      )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)selfr	   r   r   r   r   r#   r$   required_inputsikvhidden_size
batch_sizer   xbh_0s                     d/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/backend/test/case/node/rnn.py__init__zRNNHelper.__init__   s   a)  	? 	?A;;; >1 > >;;;;$SVVn215!## 6 6166 "
11 5 5 5F1I )/"-K+JZZ**Fq	Aq[[bk!Q&:&:A ;; q		Xa+oRZ@@@  &== sXz;7rzJJJ  DFAYDFAYDFDFDH DKKK &'''    r-   
np.ndarrayc                *    t          j        |          S )N)r   tanh)r&   r-   s     r0   fzRNNHelper.f?   s    wqzzr2   tuple[np.ndarray, np.ndarray]c           
     J   | j         j        d         }| j        j        d         }| j         j        d         }t          j        || j        ||g          }g }| 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        |          }	| 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   emptyr   splitr6   dot	transposer   r   addr   appendconcatenater$   )r&   
seq_lengthr+   r,   Yh_listH_tr-   HconcatenatedY_hs              r0   stepzRNNHelper.stepB   s   V\!_
hnR(V\!_
Hj$"5z;OPPh$&$&,q/::: 	 	Aq",tv..//&bl4622334&"(461--./ A
 MM!CC~f--!##(AaaaAAAqqqjM;!B%CCQ--AAAAqqq"aaaK.C#vr2   N)r	   r   r
   r   )r-   r3   r
   r3   )r
   r7   )__name__
__module____qualname__r1   r6   rH    r2   r0   r   r      sQ        -( -( -( -(^        r2   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 )	RNNr
   r   c                 l   t          j        ddgddgddggg                              t           j                  } d}d}d	}t          j                            d
g dddg|          }|t          j        d||f                              t           j                  z  }|t          j        d||f                              t           j                  z  }t          | ||          }|	                                \  }}	t          || ||g|	                    t           j                  gd           d S )N      ?       @      @      @      @      @r      皙?rN   r   r   r    rG   inputsoutputsr+   r   test_simple_rnn_defaultsr[   r\   namer   arrayastyper"   onnxhelper	make_nodeonesr   rH   r   )
input
input_sizer+   weight_scalenoder   r   rnn_rG   s
             r0   export_defaultszRNN.export_defaultsb   s4   C:SzC:>?@@GG
SS
{$$///B;K % 
 
 27A{J#?@@GG
SSS27A{K#@AAHHTTT%1***31a=ZZ
++,+		
 	
 	
 	
 	
 	
r2   c                 v   t          j        g dg dg dgg                              t           j                  } d}d}d}d}t          j                            dg dd	d
g|          }|t          j        d||f                              t           j                  z  }|t          j        d||f                              t           j                  z  }|t          j        d|f                              t           j                  z  }t          j        d|f                              t           j                  }	t          j	        ||	fd          }
t          | |||
          }|                                \  }}t          || |||
g|                    t           j                  gd           d S )NrP   rQ   rR   rS   rT   rU   g      @g       @g      "@r9      rW   rN   r   r   r   r   rY   rG   rZ   r   r   !test_simple_rnn_with_initial_biasr^   )r   ra   rb   r"   rc   rd   re   rf   r!   r@   r   rH   r   )rg   rh   r+   custom_biasri   rj   r   r   W_BR_Br   rk   rl   rG   s                 r0   export_initial_biaszRNN.export_initial_biasz   s   ???OOO___MNOOVVJ
 
 
{$$'''K#	 % 
 
 27A{J#?@@GG
SSS27A{K#@AAHHTTT BGQ$455<<RZHHHh;'((//
;;NC:A...%1Q///31a#ZZ
++,4		
 	
 	
 	
 	
 	
r2   c                    t          j        g dg dg dgg dg dg dgg                              t           j                  } d}d}t          j                            d	g d
ddg|          }t           j                            d||                              t           j                  }t           j                            d||                              t           j                  }t           j                            d|                              t           j                  }t           j                            d|                              t           j                  }t          j	        ||fd          }t          | |||
          }	|	                                \  }
}t          || |||g|                    t           j                  gd           d S )Nro   rp   rq   )g      $@g      &@g      (@)g      *@g      ,@g      .@)g      0@g      1@g      2@r9   rr   rN   rs   rY   rG   rZ   r   r   test_rnn_seq_lengthr^   )r   ra   rb   r"   rc   rd   re   randomrandnr@   r   rH   r   )rg   rh   r+   rj   r   r   rv   rw   r   rk   rl   rG   s               r0   export_seq_lengthzRNN.export_seq_length   s    ///???C###%7%7%79K9K9KL
 

 &

 	 
{$$'''K#	 % 
 
 IOOA{J77>>rzJJIOOA{K88??
KK iooa--44RZ@@iooa--44RZ@@NC:A...%1Q///31a#ZZ
++,&		
 	
 	
 	
 	
 	
r2   c                    t          j        ddggddggddggg                              t           j                  } d}d}d	}d
}t          j                            dg dddg||          }|t          j        d
||f                              t           j                  z  }|t          j        d
||f                              t           j                  z  }t          | |||          }|	                                \  }	}
t          || ||g|	                    t           j                  |
                    t           j                  gd           d S )NrP   rQ   rR   rS   rT   rU   r   rV   g      ?r   rN   rX   rB   rG   )r[   r\   r+   r   )r   r   r   r   test_simple_rnn_batchwiser^   r`   )rg   rh   r+   ri   r   rj   r   r   rk   rB   rG   s              r0   export_batchwisezRNN.export_batchwise   sT   C:,#sSzlCDDKKBJWW
{$$"??%L# % 
 
 27A{J#?@@GG
SSS27A{K#@AAHHTTT%1&99931a=XXbj))3::bj+A+AB,		
 	
 	
 	
 	
 	
r2   N)r
   r   )rI   rJ   rK   staticmethodrm   rx   r}   r   rL   r2   r0   rN   rN   a   s        
 
 
 \
.  
  
  
 \ 
D !
 !
 !
 \!
F 
 
 
 \
 
 
r2   rN   )
__future__r   typingr   numpyr   rc   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   rN   rL   r2   r0   <module>r      s    # " " " " "            , , , , , , . . . . . .O O O O O O O Od{
 {
 {
 {
 {
$ {
 {
 {
 {
 {
r2   