
    
3jy                         S SK Jr  S SKrS SKJr  SSKJr  \R                  " \
5      r " S S\R                  5      r " S S\R                  5      r " S S	\R                  5      rg)
    N   )loggingc                   b    \ rS rSr% \\S'   \R                  r\R                  \S'   S r	S r
Srg)FlaxUpsample2D   out_channelsdtypec                     [         R                  S5        [        R                  " U R                  SSSU R
                  S9U l        g )NFlax classes are deprecated and will be removed in Diffusers v1.0.0. We recommend migrating to PyTorch classes or pinning your version of Diffusers.   r      r   r   r   kernel_sizestridespaddingr	   loggerwarningnnConvr   r	   convselfs    V/home/wildlama/miniconda3/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$ )Nr   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)FlaxDownsample2D5   r   r	   c                     [         R                  S5        [        R                  " U R                  SSSU R
                  S9U l        g )Nr   r   )r   r   r   r   r   r   s    r   r   FlaxDownsample2D.setup9   r    r!   c                 (    U R                  U5      nU$ )Nr0   )r   r)   s     r   r.   FlaxDownsample2D.__call__G   s     		-0r!   r0   Nr1   r;   r!   r   r=   r=   5   s$    {{E399"
r!   r=   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)FlaxResnetBlock2DN   in_channelsNr   g        dropout_probuse_nin_shortcutr	   c                    [         R                  S5        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 )Nr       gh㈵>)
num_groupsepsilonr   r   r   r   )r	   VALID)r   r   r   rF   r   	GroupNormnorm1r   r	   conv1Densetime_emb_projnorm2DropoutrG   dropoutconv2rH   conv_shortcut)r   r   rH   s      r   r   FlaxResnetBlock2D.setupU   s(   [	

 ,0+<+<+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   )rO   r   swishrP   rR   r8   expand_dimsrS   rU   rV   rW   )r   r)   tembdeterministicresiduals        r   r.   FlaxResnetBlock2D.__call__~   s     

=1/

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

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

=1)))(3H''r!   )rP   rV   rW   rU   rO   rS   rR   )T)r2   r3   r4   r5   r6   r7   r   rG   floatrH   boolr8   r9   r	   r   r.   r:   r;   r!   r   rD   rD   N   sD    L#L%!d!{{E399"'R(r!   rD   )
flax.linenlinenr   r&   	jax.numpynumpyr8   utilsr   
get_loggerr2   r   Moduler   r=   rD   r;   r!   r   <module>ri      sW     
   
		H	%RYY :ryy 2B(		 B(r!   