
    Pi	                         d dl mZ d dlmZmZmZ d dlmZ d dl	Z	d dl
mZ ddlmZmZ ddlmZ dZ G d d	ej                  Z G d
 dej                  Z G d dej        e          ZdS )    )field)DictOptionalcastN   )RearrangeMixinReduceMixin)_EinmixMixinzAlex Rogozhnikovc                   R    e Zd ZU eed<   eed<    ee          Zeed<   d Zd Z	dS )Reducepattern	reductiondefault_factorysizesc                 J    t          | j        | j        fi | j        | _        d S N)r	   r   r   r   reducerselfs    f/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/einops/layers/flax.pysetupzReduce.setup   s%    "4<NN4:NN    c                 6    | j                             |          S r   )r   _apply_reciper   inputs     r   __call__zReduce.__call__   s    |))%000r   N
__name__
__module____qualname__str__annotations__r   dictr   r   r    r   r   r   r      sf         LLLNNN%---E4---O O O1 1 1 1 1r   r   c                   H    e Zd ZU eed<    ee          Zeed<   d Zd Z	dS )	Rearranger   r   r   c                 >    t          | j        fi | j        | _        d S r   )r   r   r   
rearrangerr   s    r   r   zRearrange.setup   s!    (DDDDr   c                 6    | j                             |          S r   )r*   r   r   s     r   r   zRearrange.__call__!   s    ,,U333r   Nr   r&   r   r   r(   r(      s]         LLL%---E4---E E E4 4 4 4 4r   r(   c            	           e Zd ZU eed<   eed<   dZee         ed<    ee          Z	eed<   d Z
d Zd	ee         d
ee         dee         dee         fdZd ZdS )EinMixr   weight_shapeN
bias_shaper   r   c                 `    |                      | j        | j        | j        | j                   d S )N)r   r.   r/   axes_lengths)initialize_einmixr   r.   r/   r   r   s    r   r   zEinMix.setup+   s>    L*	 	 	
 	
 	
 	
 	
r   c                    |                      dt          j        j                            |          |          | _        |@|                      dt          j        j                            |          |          | _        d S d | _        d S )Nweightbias)paramjaxnninitializersuniformr4   r5   )r   r.   weight_boundr/   
bias_bounds        r   _create_parameterszEinMix._create_parameters3   sm    jj36+>+F+F|+T+TVbcc!

636+>+F+Fz+R+RT^__DIIIDIIIr   pre_reshape_patternpre_reshape_lengthspost_reshape_patternpost_reshape_lengthsc                     d | _         |)t          |t          t          |                    | _         d | _        |+t          |t          t          |                    | _        d S d S )N)r   )pre_rearranger(   r   r%   post_rearrange)r   r>   r?   r@   rA   s        r   _create_rearrange_layerszEinMix._create_rearrange_layers;   sp     "*!*+>d4QdFeFe!f!f!fD"+"+,@TSgHhHh"i"i"iD ,+r   c                     | j         |                      |          }t          j        | j        || j                  }| j        
|| j        z  }| j        |                     |          }|S r   )rC   jnpeinsumeinsum_patternr4   r5   rD   )r   r   results      r   r   zEinMix.__call__J   sk    )&&u--ED/DD9 diF*((00Fr   )r    r!   r"   r#   r$   r/   r   r   r%   r   r   r=   r   rE   r   r&   r   r   r-   r-   %   s         LLL $J$$$%---E4---
 
 
  j%c]j &d^j 'sm	j
 'tnj j j j    r   r-   )dataclassesr   typingr   r   r   
flax.linenlinenr8   r7   	jax.numpynumpyrG    r   r	   _einmixr
   
__author__Moduler   r(   r-   r&   r   r   <module>rU      s!         ' ' ' ' ' ' ' ' ' '       



       ) ) ) ) ) ) ) ) ! ! ! ! ! !
	1 	1 	1 	1 	1RY 	1 	1 	14 4 4 4 4	 4 4 4- - - - -RY - - - - -r   