§
    �ÅjH  ã                   óØ   — 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 )é    )ÚDictÚOptionalÚcastNé   )ÚRearrangeMixinÚReduceMixin)Ú_EinmixMixinzTianhe Ren & Depeng Liangc                   ó   — e Zd Zd„ ZdS )Ú	Rearrangec                 ó,   — |                       |¦  «        S ©N©Ú_apply_recipe©ÚselfÚinputs     úFC:\Projects\Historical\venv\Lib\site-packages\einops/layers/oneflow.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                 óP  — t           j                             t          j        |¦  «                             | |¦  «        d¬¦  «        | _        |�Ot           j                             t          j        |¦  «                             | |¦  «        d¬¦  «        | _        d S d | _        d S )NT)Úrequires_grad)ÚflowÚnnÚ	ParameterÚzerosÚuniform_ÚweightÚbias)r   Úweight_shapeÚweight_boundÚ
bias_shapeÚ
bias_bounds        r   Ú_create_parameterszEinMix._create_parameters   s“   € Ý”g×'Ò'ÝŒJ�|Ñ$Ô$×-Ò-¨|¨m¸\ÑJÔJÐZ^ð (ñ 
ô 
ˆŒð Ð!Ýœ×)Ò)­$¬*°ZÑ*@Ô*@×*IÒ*IÈ:È+ÐWaÑ*bÔ*bÐrvÐ)ÑwÔwˆDŒIˆIˆIàˆDŒIˆIˆIr   Ú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   r0   r1   r2   r3   s        r   Ú_create_rearrange_layerszEinMix._create_rearrange_layers   sv   € ð "ˆÔØÐ*Ý!*Ð+>Ð!bÐ!bÅ$ÅtÐM`ÑBaÔBaÐ!bÐ!bˆDÔà"ˆÔØÐ+Ý"+Ð,@Ð"eÐ"eÅDÍÐOcÑDdÔDdÐ"eÐ"eˆDÔÐÐð ,Ð+r   c                 óØ   — | j         �|                       |¦  «        }t          j        | j        || j        ¦  «        }| j        �
|| j        z  }| j        �|                      |¦  «        }|S r   )r5   r$   ÚeinsumÚeinsum_patternr)   r*   r7   )r   r   Úresults      r   r   zEinMix.forward.   sk   € ØÔÐ)Ø×&Ò& uÑ-Ô-ˆEÝ”˜TÔ0°%¸¼ÑEÔEˆØŒ9Ð Ø�d”iÑˆFØÔÐ*Ø×(Ò(¨Ñ0Ô0ˆFØˆr   N)	r   r   r   r/   r   Ústrr   r8   r   r   r   r   r!   r!      s„   € € € € € ðð ð ðfà% cœ]ðfð & dœ^ðfð ' sœmð	fð
 ' tœnðfð fð fð fðð ð ð ð r   r!   )Útypingr   r   r   Úoneflowr$   Ú r   r   Ú_einmixr	   Ú
__author__r%   ÚModuler   r   r!   r   r   r   ú<module>rD      sø   ðØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø !Ð !Ð !Ð !Ð !Ð !à(€
ð)ð )ð )ð )ð )� ¤¤ñ )ô )ð )ð
)ð )ð )ð )ð )ˆ[˜$œ'œ.ñ )ô )ð )ð
!ð !ð !ð !ð !ˆ\˜4œ7œ>ñ !ô !ð !ð !ð !r   