
    Ng                     t    d dl mZ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 )	    )AnyTupleN)Base)expectc                   r    e Zd ZdeddfdZdej        dej        fdZdeej        ej        f         fdZ	dS )	RNNHelperparamsreturnNc                    d}d}d}d}d}d}|||g}|D ]}	|	|v sJ d|	             |t          |                   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  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npsqueezegetswapaxeszerosfloat32r   r   r   r   H_0LAYOUTNotImplementedError)selfr	   r   r   r   r   r!   r"   required_inputsikhidden_size
batch_sizer   xbh_0s                    [/var/www/html/ai-engine/env/lib/python3.11/site-packages/onnx/backend/test/case/node/rnn.py__init__zRNNHelper.__init__   s   a)  	? 	?A;;; >1 > >;;;;$SVVn215!## > >66 "
6!91 = = =F1I )/"-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*   c                 *    t          j        |          S )N)r   tanh)r$   r*   s     r-   fzRNNHelper.f>   s    wqzzr/   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   splitr2   dot	transposer   r   addr   appendconcatenater"   )r$   
seq_lengthr(   r)   Yh_listH_tr*   HconcatenatedY_hs              r-   stepzRNNHelper.stepA   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r/   )
__name__
__module____qualname__r   r.   r   ndarrayr2   r   rC    r/   r-   r   r      s        -( -( -( -( -( -(^2: "*    eBJ
23      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 )RNNr
   Nc                  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      皙?rJ   r   r   r    rB   inputsoutputsr(   r   test_simple_rnn_defaultsrW   rX   namer   arrayastyper    onnxhelper	make_nodeonesr   rC   r   )
input
input_sizer(   weight_scalenoder   r   rnn_rB   s
             r-   export_defaultszRNN.export_defaultsa   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
++,+		
 	
 	
 	
 	
 	
r/   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rL   rM   rN   rO   rP   rQ   g      @g       @g      "@r4      rS   rJ   r   r   r   r   rU   rB   rV   r   r   !test_simple_rnn_with_initial_biasrZ   )r   r]   r^   r    r_   r`   ra   rb   r   r;   r   rC   r   )rc   rd   r(   custom_biasre   rf   r   r   W_BR_Br   rg   rh   rB   s                 r-   export_initial_biaszRNN.export_initial_biasy   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		
 	
 	
 	
 	
 	
r/   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 )Nrk   rl   rm   )g      $@g      &@g      (@)g      *@g      ,@g      .@)g      0@g      1@g      2@r4   rn   rJ   ro   rU   rB   rV   r   r   test_rnn_seq_lengthrZ   )r   r]   r^   r    r_   r`   ra   randomrandnr;   r   rC   r   )rc   rd   r(   rf   r   r   rr   rs   r   rg   rh   rB   s               r-   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
++,&		
 	
 	
 	
 	
 	
r/   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 )NrL   rM   rN   rO   rP   rQ   r   rR   g      ?r   rJ   rT   r=   rB   )rW   rX   r(   r   )r   r   r   r   test_simple_rnn_batchwiserZ   r\   )rc   rd   r(   re   r   rf   r   r   rg   r=   rB   s              r-   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,		
 	
 	
 	
 	
 	
r/   )r
   N)rD   rE   rF   staticmethodri   rt   ry   r|   rH   r/   r-   rJ   rJ   `   s        
 
 
 \
.  
  
  
 \ 
D !
 !
 !
 \!
F 
 
 
 \
 
 
r/   rJ   )typingr   r   numpyr   r_   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   rJ   rH   r/   r-   <module>r      s   
              , , , , , , . . . . . .O O O O O O O Od{
 {
 {
 {
 {
$ {
 {
 {
 {
 {
r/   