
    /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dZdS )	GRUHelperparamsr   returnNonec                ,   d}d}d}d}d}d}d}d}	|||g}
|
D ]}||v sJ d	|             ||         j         d
         | _        | j        dk    r8|                                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            }||v r||         nt          j        ||f          }|                    |d
          }|| _        ||         | _	        ||         | _
        || _        || _        || _        || _        d S t                      )NXWRB	initial_hlinear_before_resetlayout   zMissing Required Input: r      axis   )shapenum_directionsitemsnpsqueezegetswapaxeszerosr   r   r   r   H_0LBRLAYOUTNotImplementedError)selfr	   r   r   r   r   r"   r#   r$   number_of_gatesrequired_inputsikvhidden_size
batch_sizer   xbh_0lbrs                        d/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/backend/test/case/node/gru.py__init__zGRUHelper.__init__   s   #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?@@ 
 "%&++BHj+=V4W4WC**S!$$CDFAYDFAYDFDFDHDH DKKK &'''    r.   
np.ndarrayc                8    ddt          j        |           z   z  S )Nr   )r   expr&   r.   s     r2   fzGRUHelper.f?   s    Ar

N##r4   c                *    t          j        |          S )N)r   tanhr8   s     r2   gzGRUHelper.gB   s    wqzzr4   tuple[np.ndarray, np.ndarray]c                   | j         j        d         }| j        j        d         }| j         j        d         }t          j        || j        ||g          }g }t          j        | j        d          \  }}}t          j        | j        d          \  }	}
}t          j        | j	        d          \  }}}}}}t          j
        t          j        ||f                    }t          j
        t          j        |	|
f                    }t          j        t          j        ||f          t          j        ||f                    }| j        }t          j        | j         | j         j        d         d          D ]z}t          j        ||          t          j        ||          z   |z   }t          j        |dd          \  }}|                     |          }|                     |          }|                     t          j        |t          j
        |                    t          j        ||z  t          j
        |                    z   |z   |z             }|                     t          j        |t          j
        |                    |t          j        |t          j
        |                    |z   z  z   |z             }| j        r|n|}d|z
  |z  ||z  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   r"   r   emptyr   splitr   r   r   	transposeconcatenateadddotr9   r<   r#   appendr$   ) r&   
seq_lengthr,   r-   Yh_listw_zw_rw_hr_zr_rr_hw_bzw_brw_bhr_bzr_brr_bhgates_wgates_rgates_bH_tr.   gateszr	h_defaulth_linearhHconcatenatedY_hs                                    r2   stepzGRUHelper.stepE   s   V\!_
hnR(V\!_
Hj$"5z;OPP(461--c3(461--c3/1x/B/B,tT4t,r~sCj99::,r~sCj99::&t55r~tTl7S7STTh$&$&,q/::: 	 	AF1g&&W)=)==GE8E1b))DAqq		Aq		Aq",s++,,&S",s"3"3445  I vvq",s++,,rvc2<#4#455<=> H
 !H3)AQ!a#g%AMM!CC~f--!##(AaaaAAAqqqjM;!B%CCQ--AAAAqqq"aaaK.C#vr4   N)r	   r   r
   r   )r.   r5   r
   r5   )r
   r=   )__name__
__module____qualname__r3   r9   r<   rc    r4   r2   r   r      se        -( -( -( -(^$ $ $ $   / / / / / /r4   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 )	GRUr
   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   ri   r   r   r    rb   inputsoutputsr,   r   test_gru_defaultsrv   rw   namer   arrayastypefloat32onnxhelper	make_nodeonesr   rc   r   )input
input_sizer,   weight_scaler'   noder   r   gru_rb   s              r2   export_defaultszGRU.export_defaultsx   sS   C:SzC:>?@@GG
SS
{$$///B;K % 
 
 27+-z:
 

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

&

 %1***31a=ZZ
++,$		
 	
 	
 	
 	
 	
r4   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rk   rl   rm   rn   ro   rp   g      @g       @g      "@r   rr   ri   r   r   r   r   rt   rb   ru   r   r   test_gru_with_initial_biasry   )r   r|   r}   r~   r   r   r   r   r!   rC   r   rc   r   )r   r   r,   r   custom_biasr'   r   r   r   W_BR_Br   r   r   rb   s                  r2   export_initial_biaszGRU.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:A...%1Q///31a#ZZ
++,-		
 	
 	
 	
 	
 	
r4   c                    t          j        g dg dg dgg dg dg dgg                              t           j                  } d}d}d}t          j                            d	g d
ddg|          }t           j                            d||z  |                              t           j                  }t           j                            d||z  |                              t           j                  }t           j                            d||z                                t           j                  }t           j                            d||z                                t           j                  }t          j	        ||fd          }	t          | |||	
          }
|
                                \  }}t          || |||	g|                    t           j                  gd           d S )Nr   r   r   )g      $@g      &@g      (@)g      *@g      ,@g      .@)g      0@g      1@g      2@r   rq   ri   r   rt   rb   ru   r   r   test_gru_seq_lengthry   )r   r|   r}   r~   r   r   r   randomrandnrC   r   rc   r   )r   r   r,   r'   r   r   r   r   r   r   r   r   rb   s                r2   export_seq_lengthzGRU.export_seq_length   s    ///???C###%7%7%79K9K9KL
 

 &

 	 
{$$'''K#	 % 
 
 IOOA<jIIPPJ
 
 IOOA<kJJQQJ
 

 iooa;!>??FFrzRRiooa;!>??FFrzRRNC:A...%1Q///31a#ZZ
++,&		
 	
 	
 	
 	
 	
r4   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 )Nrk   rl   rm   rn   ro   rp   r   r?   r   g?r   ri   rs   rH   rb   )rv   rw   r,   r   )r   r   r   r   test_gru_batchwisery   r{   )r   r   r,   r'   r   r   r   r   r   r   rH   rb   s               r2   export_batchwisezGRU.export_batchwise   ss   C:,#sSzlCDDKKBJWW
{$$"??%L# % 
 
 27+-z:
 

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

&

 %1&99931a=XXbj))3::bj+A+AB%		
 	
 	
 	
 	
 	
r4   N)r
   r   )rd   re   rf   staticmethodr   r   r   r   rg   r4   r2   ri   ri   w   s        
 
 
 \
8 '
 '
 '
 \'
R &
 &
 &
 \&
P 
 
 
 \
 
 
r4   ri   )
__future__r   typingr   numpyr   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   ri   rg   r4   r2   <module>r      s    # " " " " "            , , , , , , . . . . . .e e e e e e e ePQ
 Q
 Q
 Q
 Q
$ Q
 Q
 Q
 Q
 Q
r4   