
    i3W                        S SK r S SKJrJrJr  S SKrS SKJr   " S S\R                  R                  5      r " S S\R                  R                  5      r	 " S S	\R                  R                  5      r
 " S
 S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S  S!\R                  R                  5      r " S" S#\R                  R                  5      r " S$ S%\R                  R                  5      r " S& S'\R                  R                  5      r " S( S)\R                  R                  5      r " S* S+\R                  R                  5      r " S, S-\R                  R                  5      r " S. S/\R                  R                  5      r " S0 S1\R                  R                  5      r " S2 S3\R                  R                  5      r " S4 S5\R                  R                  5      r  " S6 S7\R                  R                  5      r! " S8 S9\R                  R                  5      r" " S: S;\R                  R                  5      r# " S< S=\R                  R                  5      r$ " S> S?\R                  R                  5      r% " S@ SA\R                  R                  5      r& " SB SC\R                  R                  5      r' " SD SE\R                  R                  5      r( " SF SG\R                  R                  5      r) " SH SI\R                  R                  5      r* " SJ SK\R                  R                  5      r+ " SL SM\R                  R                  5      r, " SN SO\R                  R                  5      r- " SP SQ\R                  R                  5      r. " SR SS\R                  R                  5      r/ " ST SU\R                  R                  5      r0 " SV SW\R                  R                  5      r1 " SX SY\R                  R                  5      r2SZ r3 " S[ S\\R                  R                  5      r4 " S] S^\R                  R                  5      r5 " S_ S`\R                  5      r6 " Sa Sb\R                  R                  5      r7 " Sc Sd\R                  R                  5      r8 " Se Sf\R                  R                  5      r9 " Sg Sh\R                  R                  5      r: " Si Sj\R                  R                  5      r; " Sk Sl\R                  R                  5      r< " Sm Sn\R                  R                  5      r= " So Sp\R                  R                  5      r> " Sq Sr\R                  R                  5      r? " Ss St\R                  R                  5      r@g)u    N)Callable
CollectionUnion)nnc                      ^  \ rS rSr        SS\S\\\\\4   4   S\S\\\\\4   4   S\S\\\\	\   4   S\\\\\4   4   S	\4U 4S
 jjjr
S rSrU =r$ )Conv1dModule   biasdilationin_channelskernel_sizeout_channelspaddingstridegroupc	                 t   > [         T	U ]  5         [        R                  R	                  UUUUUUUUS9U l        g N)r   r   r   r   r   r   r
   groups)super__init__torchr   Conv1dconv
selfr
   r   r   r   r   r   r   r   	__class__s
            c/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/backends/nxp/tests/models.pyr   Conv1dModule.__init__   A     	HHOO#%# $ 	
	    c                 $    U R                  U5      $ Nr   r   xs     r   forwardConv1dModule.forward(       yy|r    r#   T            r      r*   __name__
__module____qualname____firstlineno__boolr   inttuplestrr   r   r&   __static_attributes____classcell__r   s   @r   r   r           013445./

 U38_,-
 	

 3c3h/0
 
 sCC01
 c5c?*+
 
 
0 r    r   c                      ^  \ rS rSr        SS\S\\\\\4   4   S\S\\\\\4   4   S\S\\\\	\   4   S\\\\\4   4   S	\4U 4S
 jjjr
S rSrU =r$ )Conv2dModule,   r
   r   r   r   r   r   r   r   c	                 t   > [         T	U ]  5         [        R                  R	                  UUUUUUUUS9U l        g r   r   r   r   r   Conv2dr   r   s
            r   r   Conv2dModule.__init__-   r   r    c                 $    U R                  U5      $ r"   r#   r$   s     r   r&   Conv2dModule.forwardE   r(   r    r#   r)   r/   r:   s   @r   r=   r=   ,   r;   r    r=   c                      ^  \ rS rSr        SS\S\\\\\4   4   S\S\\\\\4   4   S\S\\\\	\   4   S\\\\\4   4   S	\4U 4S
 jjjr
S rSrU =r$ )Conv3dModuleI   r
   r   r   r   r   r   r   r   c	                 t   > [         T	U ]  5         [        R                  R	                  UUUUUUUUS9U l        g r   )r   r   r   r   Conv3dr   r   s
            r   r   Conv3dModule.__init__J   r   r    c                 $    U R                  U5      $ r"   r#   r$   s     r   r&   Conv3dModule.forwardb   r(   r    r#   r)   r/   r:   s   @r   rF   rF   I   r;   r    rF   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv2dAndMaxPool2DModulef   c                    > [         TU ]  5         [        R                  R	                  SSSSS9U l        [        R                  R                  SSS9U l        g )Nr-          T)r   r   r   r
   r.   )r   r   )r   r   r   r   rA   r   	MaxPool2dmaxpoolr   r   s    r   r   !Conv2dAndMaxPool2DModule.__init__g   sM    HHOO $ 
	 xx))a)Br    c                 F    U R                  U5      nU R                  U5      $ r"   r   rT   r$   s     r   r&    Conv2dAndMaxPool2DModule.forwardo       IIaL||Ar    rX   r0   r1   r2   r3   r   r&   r8   r9   r:   s   @r   rN   rN   f   s    C r    rN   c                   P   ^  \ rS rSrSS\\   S\\-  S-  4U 4S jjjrS rSr	U =r
$ )	Conv2dConstantPadNDModulet   Npaddingsconstantc                 `   > [         TU ]  5         [        X5      U l        [	        5       U l        g r"   r   r   ConstantPadNDModulepadr=   r   r   r_   r`   r   s      r   r   "Conv2dConstantPadNDModule.__init__u   #    &x: N	r    c                 F    U R                  U5      nU R                  U5      $ r"   r   rd   r$   s     r   r&   !Conv2dConstantPadNDModule.forwardz   s    IIaLxx{r    ri   r"   r0   r1   r2   r3   r   r5   floatr   r&   r8   r9   r:   s   @r   r]   r]   t   s2    #C #ECK$<N # #
 r    r]   c                   6   ^  \ rS rSrS\4U 4S jjrS rSrU =r$ )SoftmaxModule   dimc                 f   > [         TU ]  5         [        R                  R	                  US9U l        g Nrp   )r   r   r   r   Softmaxsoftmaxr   rp   r   s     r   r   SoftmaxModule.__init__   s'    xx''C'0r    c                 $    U R                  U5      $ r"   ru   r$   s     r   r&   SoftmaxModule.forward   s    ||Ar    ry   	r0   r1   r2   r3   r5   r   r&   r8   r9   r:   s   @r   rn   rn      s    1C 1
 r    rn   c                   6   ^  \ rS rSrS\4U 4S jjrS rSrU =r$ )SoftmaxConvModule   rp   c                 \   > [         TU ]  5         [        5       U l        [	        US9U l        g rr   )r   r   r=   r   rn   ru   rv   s     r   r   SoftmaxConvModule.__init__   s#     N	$-r    c                 F    U R                  U5      nU R                  U5      $ r"   r   ru   r$   s     r   r&   SoftmaxConvModule.forward   rZ   r    r   r{   r:   s   @r   r}   r}      s    .C . r    r}   c                   :   ^  \ rS rSrSS\4U 4S jjjrS rSrU =r$ )ConvWithSigmoid   conv_in_channelsc           	         > [         TU ]  5         [        R                  R	                  [        R                  R                  USSSS9[        R                  R                  5       5      U l        g )Nr,   )r.   r.   )r   r   r   r   )r   r   r   r   
SequentialrA   Sigmoidblock)r   r   r   s     r   r   ConvWithSigmoid.__init__   sW    XX((HHOO,"	   HH

r    c                 $    U R                  U5      $ r"   r   r$   s     r   r&   ConvWithSigmoid.forward   s    zz!}r    r   r,   r{   r:   s   @r   r   r      s    

 

 

 r    r   c                   6   ^  \ rS rSrS\4U 4S jjrS rSrU =r$ )LinearModule   r
   c                 j   > [         TU ]  5         [        R                  R	                  SSUS9U l        g )NrQ      r
   r   r   r   r   Linearlinear)r   r
   r   s     r   r   LinearModule.__init__   s(    hhoob"4o8r    c                 $    U R                  U5      $ r"   r   r$   s     r   r&   LinearModule.forward   s    {{1~r    r   )	r0   r1   r2   r3   r4   r   r&   r8   r9   r:   s   @r   r   r      s    9T 9 r    r   c                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )SliceTensorModule   c                 F   > [         TU ]  5         Xl        X l        X0l        g r"   )r   r   dimsstartsends)r   r   r   r   r   s       r   r   SliceTensorModule.__init__   s    		r    c                     [        S 5      /UR                  5       -  n[        U R                  5       H-  u  p4[        U R                  U   U R
                  U   5      X$'   M/     U[        U5         $ r"   )slicerp   	enumerater   r   r   r6   )r   r%   slicesirp   s        r   do_sliceSliceTensorModule.do_slice   sZ    +(		*FAA		!=FK +vr    c                 (    U R                  U5      nU$ r"   )r   r$   s     r   r&   SliceTensorModule.forward   s    MM!r    )r   r   r   )	r0   r1   r2   r3   r   r   r&   r8   r9   r:   s   @r   r   r      s      r    r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SliceTensorConvModule   c                 h   > [         TU ]  5         [        UUSSSS9U l        [	        XU5      U l        g )Nr,   r*   )r   r   r   r   r   )r   r   r=   r   r   r   )r   r   r   r   r   r   r   s         r   r   SliceTensorConvModule.__init__   s9     #%
	 'tT:
r    c                 J    U R                  U5      nU R                  U5      nU$ r"   r   r   r$   s     r   r&   SliceTensorConvModule.forward   s!    IIaLJJqMr    r   r[   r:   s   @r   r   r      s    	; r    r   c                   6   ^  \ rS rSrS\4U 4S jjrS rSrU =r$ )AddmmModule   r   c                   > [         TU ]  5         [        R                  R	                  [        R
                  " X5      5      U l        [        R                  R	                  [        R
                  " U5      5      U l        [        R                  R                  R                  U R                  [        R                  " S5      S9  [        R                  R                  R                  U R                  5      u  p#S[        R                  " U5      -  n[        R                  R                  R                  U R                  U* U5        U R                  5         g )NrR   ar*   )r   r   r   r   	Parameteremptyweightr
   initkaiming_uniform_mathsqrt_calculate_fan_in_and_fan_outuniform_eval)r   r   fan_in_boundr   s        r   r   AddmmModule.__init__   s    hh(([)NOHH&&u{{;'?@	&&t{{diil&CHHMM??L	DIIf%%tyy5&%8		r    c                 X    [         R                  " U R                  XR                  5      $ r"   )r   addmmr
   r   r$   s     r   r&   AddmmModule.forward   s    {{499a55r    )r
   r   r{   r:   s   @r   r   r      s    C 6 6r    r   c                   6   ^  \ rS rSrS\4U 4S jjrS rSrU =r$ )MmModule   r   c                 >  > [         TU ]  5         [        R                  R	                  [        R
                  " X5      5      U l        [        R                  R                  R                  U R                  [        R                  " S5      S9  U R                  5         g )NrR   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   s     r   r   MmModule.__init__   s]    hh(([)NO&&t{{diil&C		r    c                 B    [         R                  " XR                  5      $ r"   )r   mmr   r$   s     r   r&   MmModule.forward   s    xx;;''r    )r   r{   r:   s   @r   r   r      s    C ( (r    r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )LinearSoftmaxModule   c                    > [         TU ]  5         [        R                  R	                  SS5      U l        [        R                  R                  S5      U l        g )N   
   r*   )r   r   r   r   r   r   rt   ru   rU   s    r   r   LinearSoftmaxModule.__init__   s:    hhoob"-xx''*r    c                 J    U R                  U5      nU R                  U5      nU$ r"   r   ru   r$   s     r   r&   LinearSoftmaxModule.forward   s!    KKNLLOr    r   r[   r:   s   @r   r   r      s    + r    r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ConvFCSoftmaxModule   c                    > [         TU ]  5         [        R                  R	                  SSSSS9U l        [        R                  R                  SS5      U l        [        R                  R                  S5      U l	        g )	Nr+   @   r.   Fr      r   r*   )
r   r   r   r   rA   r   r   fcrt   ru   rU   s    r   r   ConvFCSoftmaxModule.__init__   sV    HHOOAr15O9	((//$+xx''*r    c                     U R                  U5      n[        R                  " US5      nU R                  U5      nU R	                  U5      nU$ )N)r   )r   r   reshaper   ru   r$   s     r   r&   ConvFCSoftmaxModule.forward  s>    IIaLMM!Z(GGAJLLOr    )r   r   ru   r[   r:   s   @r   r   r      s    + r    r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )#ConvFCFCSoftmaxModuleWithoutReshapei  c                 H  > [         TU ]  5         [        R                  R	                  SSSSS9U l        [        R                  R                  SS5      U l        [        R                  R                  SS5      U l        [        R                  R                  S	5      U l
        g )
Nr+   rR   r.   Fr   rQ   r   r-   r*   )r   r   r   r   rA   r   r   fc1fc2rt   ru   rU   s    r   r   ,ConvFCFCSoftmaxModuleWithoutReshape.__init__  sl    HHOOAq!%O8	88??2r*88??2q)xx''*r    c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU$ r"   r   r   r   ru   r$   s     r   r&   +ConvFCFCSoftmaxModuleWithoutReshape.forward  s;    IIaLHHQKHHQKLLOr    r   r[   r:   s   @r   r   r     s    + r    r   c                   P   ^  \ rS rSrSS\\   S\\-  S-  4U 4S jjjrS rSr	U =r
$ )	rc   i   Nr_   r`   c                 :   > [         TU ]  5         Xl        X l        g r"   )r   r   r_   r`   re   s      r   r   ConstantPadNDModule.__init__!  s      r    c                 *   U R                   c>  [        R                  R                  R	                  U[        U R                  5      S5      $ [        R                  R                  R	                  U[        U R                  5      SU R                   5      $ )Nr`   )r`   r   r   
functionalrd   r6   r_   r$   s     r   r&   ConstantPadNDModule.forward&  sg    == 88&&**1eDMM.BJOO88&&**5'T]] r    )r`   r_   r"   rk   r:   s   @r   rc   rc      s2    !C !ECK$<N ! !
 r    rc   c                   P   ^  \ rS rSrSS\\   S\\-  S-  4U 4S jjjrS rSr	U =r
$ )	ConstantPadNDConvModulei/  Nr_   r`   c                 `   > [         TU ]  5         [        X5      U l        [	        5       U l        g r"   rb   re   s      r   r    ConstantPadNDConvModule.__init__0  rg   r    c                 F    U R                  U5      nU R                  U5      $ r"   )rd   r   r$   s     r   r&   ConstantPadNDConvModule.forward5  s    HHQKyy|r    ri   r"   rk   r:   s   @r   r   r   /  s2    #C #ECK$<N # #
 r    r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )MaxPool2dModulei:  c                 l   > [         TU ]  5         [        R                  R	                  SSUSS9U l        g Nr,   r.   r*   )r   r   r   r   )r   r   r   r   rS   
max_pool2dr   r   r   s     r   r   MaxPool2dModule.__init__;  s2    ((,,!Wq - 
r    c                 $    U R                  U5      $ r"   r  r$   s     r   r&   MaxPool2dModule.forwardB      q!!r    r	  r   r[   r:   s   @r   r  r  :  s    
" "r    r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )MaxPool2dConvModuleiF  c                    > [         TU ]  5         [        5       U l        [        R
                  R                  SSUSS9U l        g r  )r   r   r=   r   r   r   rS   r  r  s     r   r   MaxPool2dConvModule.__init__G  s;     N	((,,!Wq - 
r    c                 F    U R                  U5      nU R                  U5      $ r"   r   r  r$   s     r   r&   MaxPool2dConvModule.forwardO      IIaLq!!r    r  r  r[   r:   s   @r   r  r  F  s    
" "r    r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )AvgPool2dModuleiT  c                 l   > [         TU ]  5         [        R                  R	                  SSUUS9U l        g )Nr,   r.   r   r   r   count_include_pad)r   r   r   r   	AvgPool2davg_poolr   r  r   r   s      r   r   AvgPool2dModule.__init__U  s5    **/	 + 
r    c                 $    U R                  U5      $ r"   r  r$   s     r   r&   AvgPool2dModule.forward_  s    }}Qr    r  r  r[   r:   s   @r   r  r  T  s    
   r    r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )AvgPool2dConvModuleic  c                    > [         TU ]  5         [        5       U l        [        R
                  R                  SSUUS9U l        g )Nr,   r*   r  )r   r   r=   r   r   r   r  r  r  s      r   r   AvgPool2dConvModule.__init__d  s>     N	**/	 + 
r    c                 F    U R                  U5      nU R                  U5      $ r"   )r   r  r$   s     r   r&   AvgPool2dConvModule.forwardo  s    IIaL}}Qr    )r  r   r  r[   r:   s   @r   r"  r"  c  s    	
   r    r"  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )AdaptiveAvgPool2dModuleit  c                 f   > [         TU ]  5         [        R                  R	                  US9U l        g )Noutput_size)r   r   r   r   AdaptiveAvgPool2dadaptive_avg_poolr   r+  r   s     r   r    AdaptiveAvgPool2dModule.__init__u  s(    !&!;!;!;!Tr    c                 $    U R                  U5      $ r"   r-  r$   s     r   r&   AdaptiveAvgPool2dModule.forwardz  s    %%a((r    r1  r[   r:   s   @r   r(  r(  t  s    U
) )r    r(  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )AdaptiveAvgPool2dConvModulei~  c                    > [         TU ]  5         [        SS9U l        [        R
                  R                  US9U l        g )Nr*   )r   r*  r   r   r=   r   r   r   r,  r-  r.  s     r   r   $AdaptiveAvgPool2dConvModule.__init__  s4     +	!&!;!;!;!Tr    c                 F    U R                  U5      nU R                  U5      $ r"   r   r-  r$   s     r   r&   #AdaptiveAvgPool2dConvModule.forward  s     IIaL%%a((r    r-  r   r[   r:   s   @r   r4  r4  ~  s    U) )r    r4  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )"AdaptiveAvgPool2dConvMeanDimModulei  c                    > [         TU ]  5         [        5       U l        [        R
                  R                  SS9U l        g )N)r*   r*   r*  r6  rU   s    r   r   +AdaptiveAvgPool2dConvMeanDimModule.__init__  s1     N	!&!;!;!;!Or    c                 J    U R                  U5      nU R                  U5      nU$ r"   r9  r$   s     r   r&   *AdaptiveAvgPool2dConvMeanDimModule.forward  s$    IIaL""1%r    r;  r[   r:   s   @r   r=  r=    s    P r    r=  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )
ReLUModulei  c                 h   > [         TU ]  5         [        R                  R	                  5       U l        g r"   )r   r   r   r   ReLUrelurU   s    r   r   ReLUModule.__init__  s    HHMMO	r    c                 $    U R                  U5      $ r"   rF  r$   s     r   r&   ReLUModule.forward  r(   r    rI  r[   r:   s   @r   rC  rC    s    $
 r    rC  c                   l   ^  \ rS rSrSS\R
                  R                  \-  S\4U 4S jjjr	S r
SrU =r$ )Conv2dWithActivationi  
activationr   c                 v   > [         TU ]  5         [        R                  R	                  USSS9U l        Xl        g )Nr   )r,   r,   )r   r   r   )r   r   r   r   rA   r   rM  )r   rM  r   r   s      r   r   Conv2dWithActivation.__init__  s5    HHOO#"& $ 
	 %r    c                 F    U R                  U5      nU R                  U5      $ r"   r   rM  r$   s     r   r&   Conv2dWithActivation.forward  r  r    rM  r   r   )r0   r1   r2   r3   r   r   Moduler   r5   r   r&   r8   r9   r:   s   @r   rL  rL    s2    %588??X#= %C % %" "r    rL  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv2dReLUModulei  c                    > [         TU ]  5         [        R                  R	                  SSSSS9U l        [        R                  R                  5       U l        g Nr+   r   r.   Fr   )r   r   r   r   rA   r   rE  rF  rU   s    r   r   Conv2dReLUModule.__init__  s;    HHOOAr15O9	HHMMO	r    c                 F    U R                  U5      nU R                  U5      $ r"   r   rF  r$   s     r   r&   Conv2dReLUModule.forward  s    IIaLyy|r    r[  r[   r:   s   @r   rV  rV    s    $ r    rV  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv2dPermuteModulei  c                 l   > [         TU ]  5         [        R                  R	                  SSSSS9U l        g rX  r@   rU   s    r   r   Conv2dPermuteModule.__init__  s*    HHOOAr15O9	r    c                 V    U R                  U5      n[        R                  " U/ SQ5      $ )N)r   r.   r*   r,   )r   r   permuter$   s     r   r&   Conv2dPermuteModule.forward  s     IIaL}}Q--r    r#   r[   r:   s   @r   r^  r^    s    :. .r    r^  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )Conv2dReLUMaxPoolModulei  c                    > [         TU ]  5         [        R                  R	                  SSSSS9U l        [        R                  R                  5       U l        [        R                  R                  SS5      U l	        g )Nr,   r   r.   Fr   )
r   r   r   r   rA   r   rE  rF  rS   poolrU   s    r   r    Conv2dReLUMaxPoolModule.__init__  sS    HHOOAr15O9	HHMMO	HH&&q!,	r    c                 h    U R                  U5      nU R                  U5      nU R                  U5      $ r"   )r   rF  rg  r$   s     r   r&   Conv2dReLUMaxPoolModule.forward  s*    IIaLIIaLyy|r    )r   rg  rF  r[   r:   s   @r   re  re    s    - r    re  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )ConvBNModulei  c                   > [         TU ]  5         US:X  aJ  [        R                  R	                  SSSSUS9U l        [        R                  R                  SUS9U l        g US:X  aJ  [        R                  R                  SSSSUS9U l        [        R                  R                  SUS9U l        g US:X  aJ  [        R                  R                  SSSSUS9U l        [        R                  R                  SUS9U l        g US	:X  aJ  [        R                  R                  SSSSUS9U l        [        R                  R                  SUS9U l        g [        S
U 35      e)Nconv1dr,   r   r*   )r   r
   )affineconv2dconv1d_tconv2d_tzUnknown conv_module: )r   r   r   r   r   r   BatchNorm1dbnrA   BatchNorm2dConvTranspose1dConvTranspose2d
ValueError)r   conv_module	conv_bias	bn_affiner   s       r   r   ConvBNModule.__init__  s+   ("2q!)LDIhh**2i*@DGH$2q!)LDIhh**2i*@DGJ&00B190UDIhh**2i*@DGJ&00B190UDIhh**2i*@DG4[MBCCr    c                 F    U R                  U5      nU R                  U5      $ r"   )r   rt  r$   s     r   r&   ConvBNModule.forward  s    IIaLwwqzr    )rt  r   r[   r:   s   @r   rl  rl    s    D$ r    rl  c                   h   ^  \ rS rSr  SS\S\S\S\S\R                  S-  4
U 4S jjjr	S	 r
S
rU =r$ )LinearBNModulei  Nin_featuresout_featureslinear_biasbn_epsactc                    > [         TU ]  5         [        R                  R	                  XUS9U l        [        R                  R                  X$S9U l        XPl        g )N)r  r  r
   )eps)	r   r   r   r   r   r   rs  rt  r  )r   r  r  r  r  r  r   s         r   r   LinearBNModule.__init__  sN     	hhoo#[ & 
 ((&&|&@r    c                     U R                  U5      nU R                  U5      nU R                  b  U R                  U5      $ U$ r"   )r   rt  r  r$   s     r   r&   LinearBNModule.forward  s8    KKNGGAJ"hh2txx{99r    )r  rt  r   )gh㈵>N)r0   r1   r2   r3   r5   r4   rl   r   rT  r   r&   r8   r9   r:   s   @r   r  r    sX      $  	
  YY  : :r    r  c                   8   ^  \ rS rSrU 4S jr\S 5       rSrU =r$ )MulTensorModulei  c                 "   > [         TU ]  5         g r"   r   r   rU   s    r   r   MulTensorModule.__init__      r    c                 
    X-  $ r"    r%   ys     r   r&   MulTensorModule.forward  	    ur    r  	r0   r1   r2   r3   r   staticmethodr&   r8   r9   r:   s   @r   r  r          r    r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )MulTensorConvModulei
  c                 @   > [         TU ]  5         [        SSS9U l        g Nr*   )r   r   r   r   r=   r   rU   s    r   r   MulTensorConvModule.__init__       15	r    c                 ,    U R                  U5      nX-  $ r"   r#   r   r%   r  s      r   r&   MulTensorConvModule.forward      IIaLur    r#   r[   r:   s   @r   r  r  
      6 r    r  c                   8   ^  \ rS rSrU 4S jr\S 5       rSrU =r$ )MulTensorOneInputModulei  c                 "   > [         TU ]  5         g r"   r  rU   s    r   r    MulTensorOneInputModule.__init__  r  r    c                 
    X -  $ r"   r  r%   s    r   r&   MulTensorOneInputModule.forward  r  r    r  r  r:   s   @r   r  r    r  r    r  c                   8   ^  \ rS rSrU 4S jr\S 5       rSrU =r$ )AddTensorModulei  c                 "   > [         TU ]  5         g r"   r  rU   s    r   r   AddTensorModule.__init__  r  r    c                 
    X-   $ r"   r  r  s     r   r&   AddTensorModule.forward!  r  r    r  r  r:   s   @r   r  r    r  r    r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )AddTensorConvModulei&  c                 @   > [         TU ]  5         [        SSS9U l        g r  r  rU   s    r   r   AddTensorConvModule.__init__'  r  r    c                 ,    U R                  U5      nX-   $ r"   r#   r$   s     r   r&   AddTensorConvModule.forward+  r  r    r#   r[   r:   s   @r   r  r  &  r  r    r  c                   8   ^  \ rS rSrU 4S jr\S 5       rSrU =r$ )AddTensorOneInputModulei0  c                 "   > [         TU ]  5         g r"   r  rU   s    r   r    AddTensorOneInputModule.__init__1  r  r    c                 
    X -   $ r"   r  r  s    r   r&   AddTensorOneInputModule.forward4  r  r    r  r  r:   s   @r   r  r  0  r  r    r  c                   8   ^  \ rS rSrU 4S jr\S 5       rSrU =r$ )SubTensorModulei9  c                 "   > [         TU ]  5         g r"   r  rU   s    r   r   SubTensorModule.__init__:  r  r    c                 
    X-
  $ r"   r  r  s     r   r&   SubTensorModule.forward=  r  r    r  r  r:   s   @r   r  r  9  r  r    r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SubTensorConvModuleiB  c                 @   > [         TU ]  5         [        SSS9U l        g r  r  rU   s    r   r   SubTensorConvModule.__init__C  r  r    c                 ,    U R                  U5      nX-
  $ r"   r#   r  s      r   r&   SubTensorConvModule.forwardG  r  r    r#   r[   r:   s   @r   r  r  B  r  r    r  c                   8   ^  \ rS rSrU 4S jr\S 5       rSrU =r$ )SubTensorOneInputModuleiL  c                 "   > [         TU ]  5         g r"   r  rU   s    r   r    SubTensorOneInputModule.__init__M  r  r    c                 
    X -
  $ r"   r  r  s    r   r&   SubTensorOneInputModule.forwardP  r  r    r  r  r:   s   @r   r  r  L  r  r    r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )MeanDimLinearModuleiU  c                    > [         TU ]  5         Xl        X l        [        R
                  R                  SS5      U l        g )NrQ   r   )r   r   rp   keepdimr   r   r   r   )r   rp   r  r   s      r   r   MeanDimLinearModule.__init__V  s.    hhoob"-r    c                 v    U R                  U5      n[        R                  " XR                  U R                  S9$ N)rp   r  )r   r   meanrp   r  r$   s     r   r&   MeanDimLinearModule.forward\  s(    KKNzz!4<<@@r    )rp   r  r   r[   r:   s   @r   r  r  U  s    .A Ar    r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )MeanDimConvModuleia  c                 Z   > [         TU ]  5         [        SSUS9U l        Xl        X l        g )Nr*   )r   r   r   )r   r   r=   r   rp   r  )r   rp   r  r   r   s       r   r   MeanDimConvModule.__init__b  s(     1<P	r    c                 v    U R                  U5      n[        R                  " XR                  U R                  S9$ r  )r   r   r  rp   r  r$   s     r   r&   MeanDimConvModule.forwardh  s(    IIaLzz!4<<@@r    )r   rp   r  )r-   r[   r:   s   @r   r  r  a  s    A Ar    r  c                 Z   U =S:X  a    [         R                  " US9$ =S:X  a     [         R                  " US[        S5      S9$ =S:X  a    [         R                  " US9$ =S:X  a(    U(       a  [
        R                  $ [
        R                  $ S	:X  a  [         R                  " 5       $  [        e)
NrF  )inplacerelu_hardtanhg        inf)r  min_valmax_valrelu6tanhsigmoid)
r   rE  Hardtanhrl   ReLU6r   r  tanh_r   rx  )rM  r  s     r   get_activationr  m  su    
777++;;wU5\RR88G,,zz!{{"::<r    c            	       H   ^  \ rS rSr S	S\S\S\S\4U 4S jjjrS rSr	U =r
$ )
LinearActivationModulei  rM  r  r   modec                   > [         TU ]  5         UR                  5       U l        U R                  S;   d   S5       eU R                  S:X  a&  [        R
                  R                  X35      U l        GO:[        R
                  R                  [        R                  " X35      5      U l
        [        R
                  R                  [        R                  " U5      5      U l        [        R
                  R                  R                  U R                  [        R                  " S5      S9  [        R
                  R                  R!                  U R                  5      u  pVS[        R                  " U5      -  n[        R
                  R                  R#                  U R                  U* U5        [%        X5      U l        U R)                  5         g )N)r   r   r   z'Mode must be 'linear', 'addmm', or 'mm'r   rR   r   r*   )r   r   lowerr  r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r  rM  r   )	r   rM  r  r   r  r   r   r   r   s	           r   r   LinearActivationModule.__init__  s1    	JJL	yy 
 
 	5 5		5 
 99 ((//+CDK  ((,,U[[-RSDK**5;;{+CDDIHHMM**4;;$))A,*GCCDKKPIF		&))EHHMM""499ufe<(=		r    c                 >   U R                   S:X  a  U R                  U5      nU R                   S:X  a,  [        R                  " U R                  XR
                  5      nO0U R                   S:X  a   [        R                  " XR
                  5      nU R                  U5      $ )Nr   r   r   )r  r   r   r   r
   r   r   rM  r$   s     r   r&   LinearActivationModule.forward  sl    99 AA99DIIq++6AYY$KK(Aq!!r    )rM  r
   r   r  r   r   r0   r1   r2   r3   r7   r4   r5   r   r&   r8   r9   r:   s   @r   r  r    s:    LT(,;>FI 2" "r    r  c                   >   ^  \ rS rSrS\S\S\4U 4S jjrS rSr	U =r
$ )ConvActivationModulei  rM  r  r   c                 ~   > [         TU ]  5         [        US9U l        [	        X5      U l        U R                  5         g )N)r   )r   r   r=   r   r  rM  r   )r   rM  r  r   r   s       r   r   ConvActivationModule.__init__  s/     [9	(=		r    c                 F    U R                  U5      nU R                  U5      $ r"   rQ  r$   s     r   r&   ConvActivationModule.forward  r  r    rS  r  r:   s   @r   r  r    s'    3  C " "r    r  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )GRUModeli  c                 j   > [         TU ]  5         [        R                  R	                  SSUS9U l        g )Nr-   )
num_layers)r   r   r   r   GRUgru)r   r  r   s     r   r   GRUModel.__init__  s(    88<<1<<r    c                 &    U R                  US 5      $ r"   r  )r   input_s     r   r&   GRUModel.forward  s    xxD
 	
r    r  r*   r[   r:   s   @r   r  r    s    =
 
r    r  c                   h   ^  \ rS rSrU 4S jrS\R                  S\\R                     4S jrSr	U =r
$ )SplitWithSizei  c                 :   > [         TU ]  5         Xl        X l        g r"   )r   r   
split_sizerp   )r   r  rp   r   s      r   r   SplitWithSize.__init__  s    $r    r%   returnc                 X    [         R                  " XR                  U R                  5      $ r"   )r   splitr  rp   r$   s     r   r&   SplitWithSize.forward  s    {{1ootxx88r    )rp   r  r0   r1   r2   r3   r   r   Tensorr6   r&   r8   r9   r:   s   @r   r	  r	    s-    
9 9%*= 9 9r    r	  c                   h   ^  \ rS rSrU 4S jrS\R                  S\\R                     4S jrSr	U =r
$ )SplitWithSectionsi  c                 :   > [         TU ]  5         Xl        X l        g r"   )r   r   sectionsrp   )r   r  rp   r   s      r   r   SplitWithSections.__init__  s     r    r%   r  c                 X    [         R                  " XR                  U R                  5      $ r"   )r   r  r  rp   r$   s     r   r&   SplitWithSections.forward  s    {{1mmTXX66r    )rp   r  r  r:   s   @r   r  r    s-    
7 7%*= 7 7r    r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )MiniConvNetWithRegressionHeadi  c                   > [         TU ]  5         [        SSSSS9U l        [        R
                  R                  5       U l        [        R
                  R                  SS5      U l	        [        SSSSS9U l
        [        R
                  R                  5       U l        [        R
                  R                  SS5      U l	        [        R
                  R                  SS5      U l        g )Nr,   r   r*   )r   r   r   r   r.   rQ   i   )r   r   r=   conv1r   r   rE  rF  rS   rg  conv2relu2r   r   rU   s    r   r   &MiniConvNetWithRegressionHead.__init__  s    !abTUV
HHMMO	HH&&q!,	!br!UVW
XX]]_
HH&&q!,	hhooj!4r    c                    U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R	                  U5      nU R                  U5      nUR                  5       nU R                  U5      nU$ r"   )r  rF  rg  r  r  flattenr   r$   s     r   r&   %MiniConvNetWithRegressionHead.forward  sm    JJqMIIaLIIaLJJqMJJqMIIaLIIKKKNr    )r  r  r   rg  rF  r  r[   r:   s   @r   r  r    s    	5	 	r    r  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )MLPi  c           
        > [         TU ]  5         [        R                  R	                  [        R                  R                  SS5      [        R                  R                  5       [        R                  R                  SS5      [        R                  R                  5       [        R                  R                  SS5      5      U l        g )Nr*   r   )r   r   r   r   r   r   rE  
sequentialrU   s    r   r   MLP.__init__  st    ((--HHOOAr"HHMMOHHOOB#HHMMOHHOOB"
r    c                 $    U R                  U5      $ r"   r'  r$   s     r   r&   MLP.forward  r  r    r*  r[   r:   s   @r   r%  r%    s    
" "r    r%  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )UnsqueezeAddModeli  c                 .   > [         TU ]  5         Xl        g r"   r   r   rp   rv   s     r   r   UnsqueezeAddModel.__init__      r    c                 H    [         R                  " X-   U R                  5      $ r"   )r   	unsqueezerp   r  s      r   r&   UnsqueezeAddModel.forward  s    qudhh//r    rs   r[   r:   s   @r   r-  r-    s    0 0r    r-  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )LinearPReLUModulei  c                    > [         TU ]  5         [        R                  " XS9U l        [
        R                  R                  U5      U l        g )N)r  r  )r   r   r   r   r   r   PReLUprelu)r   r  r  num_parametersr   s       r   r   LinearPReLUModule.__init__  s2    iiKSXX^^N3
r    c                 F    U R                  U5      nU R                  U5      $ r"   r   r9  r$   s     r   r&   LinearPReLUModule.forward  s    KKNzz!}r    r=  r  r[   r:   s   @r   r6  r6    s    4 r    r6  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )TwoPartitionPReLUModeli  c                 h   > [         TU ]  5         [        R                  R	                  5       U l        g r"   )r   r   r   r   r8  r9  rU   s    r   r   TwoPartitionPReLUModel.__init__  s     XX^^%
r    c                 v    U R                  U5      n[        R                  " X5      nU R                  U5      nU$ r"   )r9  r   divr   r%   divisors      r   r&   TwoPartitionPReLUModel.forward  s3    JJqM IIa! JJqMr    )r9  r[   r:   s   @r   r@  r@    s    &
	 	r    r@  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )SqueezeAddModeli  c                 .   > [         TU ]  5         Xl        g r"   r/  rv   s     r   r   SqueezeAddModel.__init__   r1  r    c                     U R                   c  [        R                  " X-   5      $ [        R                  " X-   U R                   5      $ r"   )rp   r   squeezer  s      r   r&   SqueezeAddModel.forward$  s4    88==''==11r    rs   r"   r[   r:   s   @r   rI  rI    s    2 2r    rI  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )StaticDivLinearModeli+  c                 v   > [         TU ]  5         [        R                  R	                  X5      U l        X0l        g r"   )r   r   r   r   r   r   rF  )r   r   r   rF  r   s       r   r   StaticDivLinearModel.__init__,  s'    hhook@r    c                 @    U R                  U5      nXR                  -  $ r"   )r   rF  r$   s     r   r&   StaticDivLinearModel.forward1  s    KKN<<r    )rF  r   )r-   r-   r*   r[   r:   s   @r   rP  rP  +  s    
   r    rP  c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )NonstaticDivLinearModeli6  c                 j   > [         TU ]  5         [        R                  R	                  X5      U l        g r"   r   )r   r   r   r   s      r   r    NonstaticDivLinearModel.__init__7  s"    hhook@r    c                 ,    U R                  U5      nX-  $ r"   r   rE  s      r   r&   NonstaticDivLinearModel.forward;  s    KKN{r    r   )r-   r-   r[   r:   s   @r   rV  rV  6  s    A r    rV  )Ar   typingr   r   r   r   r   rT  r   r=   rF   rN   r]   rn   r}   r   r   r   r   r   r   r   r   r   rc   r   r  r  r  r"  r(  r4  r=  rC  rL  rV  r^  re  rl  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r%  r-  r6  r@  rI  rP  rV  r  r    r   <module>r\     s|    . .  588?? :588?? :588?? :uxx  EHHOO 	 	ehhoo "588??  &EHHOO &6%((// 6(uxx (%((// %((// "%((// $%((// ehhoo 	"ehhoo 	""%((// " ehhoo   %((//  ")ehhoo )	)%((// 	)
 
 "588?? "	uxx 	.%((// .
ehhoo 
588?? 0:UXX__ :.ehhoo %((// ehhoo ehhoo %((// ehhoo ehhoo %((// ehhoo 	A%((// 	A	A 	A&!"UXX__ !"H
"588?? 
"	
ryy 	
9EHHOO 97 7EHHOO 0"%((// "0 0	 	UXX__ $	2ehhoo 	2 588??  ehhoo r    