
    !Shs                         d dl mZmZmZ d dlZddlmZmZ ddlm	Z	 dZ
 G d deej        j                  Z G d	 d
eej        j                  Z G d de	ej        j                  ZdS )    )OptionalDictcastN   )RearrangeMixinReduceMixin)_EinmixMixinPaddlePaddlec                       e Zd Zd ZdS )	Rearrangec                 ,    |                      |          S N_apply_recipeselfinputs     Z/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/einops/layers/paddle.pyforwardzRearrange.forward       !!%(((    N__name__
__module____qualname__r    r   r   r   r      #        ) ) ) ) )r   r   c                       e Zd Zd ZdS )Reducec                 ,    |                      |          S r   r   r   s     r   r   zReduce.forward   r   r   Nr   r   r   r   r   r      r   r   r   c            	       b    e Zd Zd Zdee         dee         dee         dee         fdZd ZdS )	EinMixc                    |                      |t          j        j                            | |                    | _        |B|                      |t          j        j                            | |                    | _        d S d | _        d S )N)default_initializer)create_parameterpaddlenninitializerUniformweightbias)r   weight_shapeweight_bound
bias_shape
bias_bounds        r   _create_parameterszEinMix._create_parameters   s    ++fi.C.K.K\M[g.h.h , 
 
 !--	0E0M0Mzk[e0f0f .  DIII DIIIr   pre_reshape_patternpre_reshape_lengthspost_reshape_patternpost_reshape_lengthsc                     d | _         |%t          |fi t          t          |          | _         d | _        |'t          |fi t          t          |          | _        d S d S r   )pre_rearranger   r   dictpost_rearrange)r   r1   r2   r3   r4   s        r   _create_rearrange_layerszEinMix._create_rearrange_layers"   sv     "*!*+>!b!b$tM`BaBa!b!bD"+"+,@"e"eDOcDdDd"e"eD ,+r   c                     | j         |                      |          }t          j        | j        || j                  }| j        
|| j        z  }| j        |                     |          }|S r   )r6   r&   einsumeinsum_patternr*   r+   r8   )r   r   results      r   r   zEinMix.forward1   sk    )&&u--Et2E4;GG9 diF*((00Fr   N)	r   r   r   r0   r   strr   r9   r   r   r   r   r"   r"      s        
 
 
f%c]f &d^f 'sm	f
 'tnf f f f	 	 	 	 	r   r"   )typingr   r   r   r&    r   r   _einmixr	   
__author__r'   Layerr   r   r"   r   r   r   <module>rD      s    ' ' ' ' ' ' ' ' ' '  ) ) ) ) ) ) ) ) ! ! ! ! ! !
) ) ) ) )	 ) ) )
) ) ) ) )[&)/ ) ) )
% % % % %\69? % % % % %r   