
    +h                         S SK Jr  S SKrS SKJr   " S S\R                  5      r " S S\R                  5      r	 " S S\R                  5      r
g)    Nc                   b    \ rS rSr% \\S'   \R                  r\R                  \S'   S r	S r
Srg)FlaxUpsample2D   out_channelsdtypec                 f    [         R                  " U R                  SSSU R                  S9U l        g )N   r
      r   r   r   kernel_sizestridespaddingr   nnConvr   r   convselfs    V/home/james-whalen/.local/lib/python3.13/site-packages/diffusers/models/resnet_flax.pysetupFlaxUpsample2D.setup   +    GG$**
	    c                     UR                   u  p#pE[        R                  R                  UX#S-  US-  U4SS9nU R	                  U5      nU$ )N   nearest)shapemethod)r    jaximageresizer   )r   hidden_statesbatchheightwidthchannelss         r   __call__FlaxUpsample2D.__call__    sY    )6)<)<&u		((1*eai: ) 

 		-0r   r   N__name__
__module____qualname____firstlineno__int__annotations__jnpfloat32r   r   r*   __static_attributes__ r   r   r   r      s$    {{E399"
r   r   c                   b    \ rS rSr% \\S'   \R                  r\R                  \S'   S r	S r
Srg)FlaxDownsample2D+   r   r   c                 f    [         R                  " U R                  SSSU R                  S9U l        g )Nr	   )r   r   r   r   r   r   s    r   r   FlaxDownsample2D.setup/   r   r   c                 (    U R                  U5      nU$ )Nr,   )r   r%   s     r   r*   FlaxDownsample2D.__call__8   s     		-0r   r,   Nr-   r7   r   r   r9   r9   +   s$    {{E399"
r   r9   c                       \ rS rSr% \\S'   Sr\\S'   Sr\\S'   Sr	\
\S'   \R                  r\R                  \S'   S	 rSS
 jrSrg)FlaxResnetBlock2D?   in_channelsNr   g        dropout_probuse_nin_shortcutr   c                    U R                   c  U R                  OU R                   n[        R                  " SSS9U l        [        R
                  " USSSU R                  S9U l        [        R                  " XR                  S9U l	        [        R                  " SSS9U l
        [        R                  " U R                  5      U l        [        R
                  " USSSU R                  S9U l        U R                  c  U R                  U:g  OU R                  nS U l        U(       a(  [        R
                  " USSS	U R                  S9U l        g g )
N    gh㈵>)
num_groupsepsilonr	   r   r   r   )r   VALID)r   rB   r   	GroupNormnorm1r   r   conv1Densetime_emb_projnorm2DropoutrC   dropoutconv2rD   conv_shortcut)r   r   rD   s      r   r   FlaxResnetBlock2D.setupF   s   +/+<+<+Dt''$J[J[\\R>
WW$**

  XXl**E\\R>
zz$"3"34WW$**

 @D?T?T?\4++|;bfbwbw!!#"jj"D r   c                    UnU R                  U5      n[        R                  " U5      nU R                  U5      nU R	                  [        R                  " U5      5      n[
        R                  " [
        R                  " US5      S5      nX-   nU R                  U5      n[        R                  " U5      nU R                  X5      nU R                  U5      nU R                  b  U R                  U5      nX-   $ )Nr   )rK   r   swishrL   rN   r4   expand_dimsrO   rQ   rR   rS   )r   r%   tembdeterministicresiduals        r   r*   FlaxResnetBlock2D.__call__j   s     

=1/

=1!!"((4.1stQ7;%,

=1/]B

=1)))(3H''r   )rL   rR   rS   rQ   rK   rO   rN   )T)r.   r/   r0   r1   r2   r3   r   rC   floatrD   boolr4   r5   r   r   r*   r6   r7   r   r   r@   r@   ?   sD    L#L%!d!{{E399""H(r   r@   )
flax.linenlinenr   r"   	jax.numpynumpyr4   Moduler   r9   r@   r7   r   r   <module>rc      s@     
 RYY 0ryy (=(		 =(r   