
    Pi                     r    d dl Z d dl mZ d dlmZ d dlmZmZmZ  G d de          Z G d de          Z	dS )	    N)nn)Module)	rearrangepackunpackc                   $     e Zd Z fdZd Z xZS )GRUGatedResidualc                 |    t                                                       t          j        ||          | _        d S )N)super__init__r   GRUCellgru)selfdim	__class__s     o/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/hyper_connections/residuals.pyr   zGRUGatedResidual.__init__   s2     	:c3''    c                     t          |gd          \  }}t          |gd          \  }}|                     ||          }t          ||d          \  }|S )Nz* d)r   r   r   )r   xresidualpacked_shape_outputs         r   forwardzGRUGatedResidual.forward   sW    sE**<H:u--!!X&&u55r   __name__
__module____qualname__r   r   __classcell__r   s   @r   r	   r	      sG        ( ( ( ( (      r   r	   c                   (     e Zd Z	 d fd	Zd Z xZS )GatedResidualFc                     t                                                       t          j        |dz  |r|nd          | _        d S )N      )r   r   r   Linearto_learned_mix)r   r   	fine_gater   s      r   r   zGatedResidual.__init__   sB    
 	 ia	1HqIIr   c                     t          ||gd          \  }}|                     |          }|                    ||                                          }|S )Nzb n *)r   r'   lerpsigmoid)r   r   r   x_and_residualr   mixouts          r   r   zGatedResidual.forward"   sM     !X88!!.11ffXs{{}}--
r   )Fr   r    s   @r   r"   r"      sW         J J J J J J      r   r"   )
torchr   torch.nnr   einopsr   r   r   r	   r"    r   r   <module>r3      s                 * * * * * * * * * *    v   "    F     r   