
    bIg                    n    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y)
    )annotations)AnyN)Base)expectc                  $    e Zd ZddZddZddZy)	RNNHelperc                   d}d}d}d}d}d}|||g}|D ]  }	|	|v rJ d|	         |t        |         j                  d   | _        | j                  d	k(  r|D ]%  }
|
|k7  s	t        j                  ||
   d
      ||
<   ' ||   j                  d   }||   j                  d	   }|j                  |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                        }|| _	        ||   | _
        ||   | _        || _        || _        || _        y 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)selfparamsr
   r   r   r   r   r    required_inputsikhidden_size
batch_sizer   xbh_0s                    \/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/backend/test/case/node/rnn.py__init__zRNNHelper.__init__   s   a)  	?A;>":1# >>;	? %SVn2215!# >6 "

6!91 =F1I> !)//"-K+JZZ*Fq	Aq[bkk!Q&:A ; q	XXa+oRZZ@  &= sXXz;7rzzJ  DFAYDFAYDFDFDH DK &''    c                ,    t        j                  |      S )N)r   tanh)r"   r)   s     r,   fzRNNHelper.f?   s    wwqzr.   c           
        | j                   j                  d   }| j                  j                  d   }| j                   j                  d   }t        j                  || j
                  ||g      }g }| j                  }t        j                  | j                   | j                   j                  d   d      D ]  }| j                  t        j                  |t        j                  | j                              t        j                  |t        j                  | j                              z   t        j                  t        j                  | j                  d       z         }|j                  |       |} t        j                  |      }	| j
                  dk(  r|	|d d dd d d d f<   | j                   dk(  r	|d   }
||
fS 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   splitr1   dot	transposer   r   addr   appendconcatenater    )r"   
seq_lengthr'   r(   Yh_listH_tr)   HconcatenatedY_hs              r,   stepzRNNHelper.stepB   s   VV\\!_
hhnnR(VV\\!_
HHj$"5"5z;OPhh$&&$&&,,q/: 	Aq",,tvv./&&bll466234&&"((4661-./A
 MM!C	 ~~f-!#(AaAqjM;;!B%C
 #v Q-AAq"aK.C#vr.   N)r#   r   returnNone)r)   
np.ndarrayrC   rE   )rC   ztuple[np.ndarray, np.ndarray])__name__
__module____qualname__r-   r1   rB    r.   r,   r   r      s    -(^r.   r   c                  T    e Zd Zedd       Zedd       Zedd       Zedd       Zy)RNNc                 X   t        j                  ddgddgddggg      j                  t         j                        } d}d}d	}t        j
                  j                  d
g dddg|      }|t        j                  d||f      j                  t         j                        z  }|t        j                  d||f      j                  t         j                        z  }t        | ||      }|j                         \  }}	t        || ||g|	j                  t         j                        gd       y )N      ?       @      @      @      @      @r      皙?rK   r
   r   r    rA   inputsoutputsr'   r   test_simple_rnn_defaultsrX   rY   namer   arrayastyper   onnxhelper	make_nodeonesr   rB   r   )
input
input_sizer'   weight_scalenoder   r   rnn_rA   s
             r,   export_defaultszRNN.export_defaultsb   s   C:SzC:>?@GG

S
{{$$/B;K % 
 277A{J#?@GG

SS277A{K#@AHHTT%1*31a=ZZ

+,+		
r.   c                 h   t        j                  g dg dg dgg      j                  t         j                        } d}d}d}d}t        j
                  j                  dg dd	d
g|      }|t        j                  d||f      j                  t         j                        z  }|t        j                  d||f      j                  t         j                        z  }|t        j                  d|f      j                  t         j                        z  }t        j                  d|f      j                  t         j                        }	t        j                  ||	fd      }
t        | |||
      }|j                         \  }}t        || |||
g|j                  t         j                        gd       y )NrM   rN   rO   rP   rQ   rR   g      @g       @g      "@r3      rT   rK   r
   r   r   r   rV   rA   rW   r   r   !test_simple_rnn_with_initial_biasr[   )r   r^   r_   r   r`   ra   rb   rc   r   r:   r   rB   r   )rd   re   r'   custom_biasrf   rg   r   r   W_BR_Br   rh   ri   rA   s                 r,   export_initial_biaszRNN.export_initial_biasz   sj   ?O_MNOVVJJ
 
{{$$'K#	 % 
 277A{J#?@GG

SS277A{K#@AHHTT BGGQ$45<<RZZHHhh;'(//

;NNC: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      j                  t         j                        } d}d}t        j
                  j                  d	g d
ddg|      }t         j                  j                  d||      j                  t         j                        }t         j                  j                  d||      j                  t         j                        }t         j                  j                  d|      j                  t         j                        }t         j                  j                  d|      j                  t         j                        }t        j                  ||fd      }t        | |||
      }	|	j                         \  }
}t        || |||g|j                  t         j                        gd       y )Nrl   rm   rn   )g      $@g      &@g      (@)g      *@g      ,@g      .@)g      0@g      1@g      2@r3   ro   rK   rp   rV   rA   rW   r   r   test_rnn_seq_lengthr[   )r   r^   r_   r   r`   ra   rb   randomrandnr:   r   rB   r   )rd   re   r'   rg   r   r   rs   rt   r   rh   ri   rA   s               r,   export_seq_lengthzRNN.export_seq_length   sg    /?C#%79KL

 &
 	 
{{$$'K#	 % 
 IIOOA{J7>>rzzJIIOOA{K8??

K iiooa-44RZZ@iiooa-44RZZ@NNC:A.%1Q/31a#ZZ

+,&		
r.   c                    t        j                  ddggddggddggg      j                  t         j                        } d}d}d	}d
}t        j
                  j                  dg dddg||      }|t        j                  d
||f      j                  t         j                        z  }|t        j                  d
||f      j                  t         j                        z  }t        | |||      }|j                         \  }	}
t        || ||g|	j                  t         j                        |
j                  t         j                        gd       y )NrM   rN   rO   rP   rQ   rR   r   rS   g      ?r   rK   rU   r<   rA   )rX   rY   r'   r   )r
   r   r   r   test_simple_rnn_batchwiser[   r]   )rd   re   r'   rf   r   rg   r   r   rh   r<   rA   s              r,   export_batchwisezRNN.export_batchwise   s$   C:,#sSzlCDKKBJJW
{{$$"%L# % 
 277A{J#?@GG

SS277A{K#@AHHTT%1&931a=XXbjj)3::bjj+AB,		
r.   N)rC   rD   )rF   rG   rH   staticmethodrj   ru   rz   r}   rI   r.   r,   rK   rK   a   sR    
 
.  
  
D !
 !
F 
 
r.   rK   )
__future__r   typingr   numpyr   r`   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   rK   rI   r.   r,   <module>r      s4    #    , .O Od{
$ {
r.   