
    'iH                         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y)    )DictOptionalcastN   )RearrangeMixinReduceMixin)_EinmixMixinzTianhe Ren & Depeng Liangc                       e Zd Zd Zy)	Rearrangec                 $    | j                  |      S N_apply_recipeselfinputs     O/var/www/stems/demucs_env/lib/python3.12/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y)Reducec                 $    | j                  |      S r   r   r   s     r   r   zReduce.forward   r   r   Nr   r   r   r   r   r      r   r   r   c            	       H    e Zd Zd Zdee   dee   dee   dee   fdZd Zy)	EinMixc                 @   t         j                  j                  t        j                  |      j	                  | |      d      | _        |Kt         j                  j                  t        j                  |      j	                  | |      d      | _        y d | _        y )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    gg''JJ|$--|m\JZ^ ( 
 !))$**Z*@*I*I:+Wa*brv)wDIDIr   pre_reshape_patternpre_reshape_lengthspost_reshape_patternpost_reshape_lengthsc                     d | _         |t        |fi t        t        |      | _         d | _        | t        |fi t        t        |      | _        y y r   )pre_rearranger   r   dictpost_rearrange)r   r0   r1   r2   r3   s        r   _create_rearrange_layerszEinMix._create_rearrange_layers   s[     "*!*+>!b$tM`Ba!bD"+"+,@"eDOcDd"eD ,r   c                    | j                   | j                  |      }t        j                  | j                  || j                        }| j
                  || j
                  z  }| j                  | j                  |      }|S r   )r5   r$   einsumeinsum_patternr)   r*   r7   )r   r   results      r   r   zEinMix.forward.   ss    )&&u-ET00%E99 diiF*((0Fr   N)	r   r   r   r/   r   strr   r8   r   r   r   r   r!   r!      sL    f%c]f &d^f 'sm	f
 'tnfr   r!   )typingr   r   r   oneflowr$    r   r   _einmixr	   
__author__r%   Moduler   r   r!   r   r   r   <module>rD      s[    ' '  ) !(
) )
)[$''.. )
!\477>> !r   