
    wi                    ^    d dl mZ d dlZd dlmZ  G d de          Z G d de          ZdS )    )annotationsN)OpRunc                  D    e Zd Zd Zd Zd Zd Z	 	 	 	 	 	 	 	 	 	 	 ddZdS )	CommonGRUc                r    t          j        | ||           t          |j                  | _        d| _        d S )N   )r   __init__lenoutput	n_outputsnumber_of_gatesself	onnx_node
run_paramss      i/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/onnx/reference/ops/op_gru.pyr	   zCommonGRU.__init__   s6    tY
333Y-..     c                8    ddt          j        |           z   z  S )N   )npexpr   xs     r   fzCommonGRU.f   s    Ar

N##r   c                *    t          j        |          S N)r   tanhr   s     r   gzCommonGRU.g   s    wqzzr   c                N   |j         d         }|j         d         }|j         d         }	t          j        |||	|g          }
g }t          j        |d          \  }}}t          j        |d          \  }}}t          j        |d          \  }}}}}}t          j        t          j        ||f                    }t          j        t          j        ||f                    }t          j        t          j        ||f          t          j        ||f                    }|}t          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        |          }$|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      axis   )r$   r   r   r   )shaper   emptysplit	transposeconcatenateadddotr   r   linear_before_resetappendlayout)&r   XRBWH_0num_directions
seq_lengthhidden_size
batch_size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&                                         r   _stepzCommonGRU._step   s   WQZ
imWQZ
Hj.*kJKK(1a..c3(1a..c3/1x1~~,tT4t,r~sCj99::,r~sCj99::&t55r~tTl7S7STT!QWQZa000 	 	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
 !4C)AQ!a#g%AMM!CC~f--Q(AaaaAAAqqqjM;!B%CCQ--AAAAqqq"aaaK.C#vr   Nc                $   |j         d         }|dk    rt          j        |d          }t          j        |d          }|t          j        |d          }|t          j        |d          }|t          j        |d          }|j         d         }|j         d         }|dk    r|nt          j        |dd          }||n%t          j        d| j        z  |z  |j                  }||nt          j        ||f|j                  }|}|}n t          d| d| j        j	        d	          | 
                    ||||||
          \  }}|                    |j                  }| j        dk    r|fn||                    |j                  fS )Nr   r   r"   r    r$   )dtypezUnsupported value z! for num_directions and operator .)r4   )r%   r   squeezeswapaxeszerosr   rU   NotImplementedError	__class____name__rS   astyper   )r   r/   r2   r0   r1   sequence_lens	initial_hactivation_alphaactivation_betaactivationsclip	directionr6   r.   r,   r4   r7   bh_0r3   r8   rR   s                         r   _runzCommonGRU._runH   s   $ Q
11%%%A
11%%%A}Jqq)))( "
=q A A A$Jyq999	'"+KJq[[bk!Q&:&:A = Xa$"66DAGTTT  ( 	Xz;7qwGGG  ACC%0^ 0 0>*0 0 0  
 Aq!QNKK3HHQW~**ttCJJqw4G4G0HHr   )NNNNNNNNNNN)r\   
__module____qualname__r	   r   r   rS   rg    r   r   r   r      s        ! ! !
$ $ $  / / /l  7I 7I 7I 7I 7I 7Ir   r   c                      e Zd Zd ZdS )GRUc                >    t                               | ||           d S r   )r   r	   r   s      r   r	   zGRU.__init__   s     4J77777r   N)r\   rh   ri   r	   rj   r   r   rl   rl      s#        8 8 8 8 8r   rl   )
__future__r   numpyr   onnx.reference.op_runr   r   rl   rj   r   r   <module>rq      s    # " " " " "     ' ' ' ' ' 'tI tI tI tI tI tI tI tIn8 8 8 8 8) 8 8 8 8 8r   