
    iy                         d dl mZ d dlZd dlmZ ddlmZ  ej                  e
      Z G d dej                        Z G d dej                        Z G d d	ej                        Zy)
    N   )loggingc                   Z    e Zd ZU eed<   ej                  Zej                  ed<   d Zd Z	y)FlaxUpsample2Dout_channelsdtypec                     t         j                  d       t        j                  | j                  ddd| j
                        | _        y )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    f/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/diffusers/models/resnet_flax.pysetupzFlaxUpsample2D.setup   ?    [	

 GG$**
	    c                     |j                   \  }}}}t        j                  j                  |||dz  |dz  |fd      }| j	                  |      }|S )Nr   nearest)shapemethod)r"   jaximageresizer   )r   hidden_statesbatchheightwidthchannelss         r   __call__zFlaxUpsample2D.__call__*   s_    )6)<)<&vuh		((&1*eai: ) 

 		-0r   N
__name__
__module____qualname__int__annotations__jnpfloat32r   r   r,    r   r   r   r      s$    {{E399"
r   r   c                   Z    e Zd ZU eed<   ej                  Zej                  ed<   d Zd Z	y)FlaxDownsample2Dr   r   c                     t         j                  d       t        j                  | j                  ddd| j
                        | _        y )Nr
   r   )r   r   r   r   r   r   s    r   r   zFlaxDownsample2D.setup9   r   r   c                 (    | j                  |      }|S )N)r   )r   r'   s     r   r,   zFlaxDownsample2D.__call__G   s     		-0r   Nr-   r5   r   r   r7   r7   5   s$    {{E399"
r   r7   c                       e Zd ZU eed<   dZeed<   dZeed<   dZe	ed<   e
j                  Ze
j                  ed<   d Zd
d	Zy)FlaxResnetBlock2Din_channelsNr   g        dropout_probuse_nin_shortcutr   c                    t         j                  d       | j                  | j                  n| j                  }t	        j
                  dd      | _        t	        j                  |ddd| j                        | _	        t	        j                  || j                  	      | _        t	        j
                  dd      | _        t	        j                  | j                        | _        t	        j                  |ddd| j                        | _        | j"                  | j                  |k7  n| j"                  }d | _        |r*t	        j                  |ddd
| j                        | _        y y )Nr
       gh㈵>)
num_groupsepsilonr   r   r   r   )r   VALID)r   r   r   r<   r   	GroupNormnorm1r   r   conv1Densetime_emb_projnorm2Dropoutr=   dropoutconv2r>   conv_shortcut)r   r   r>   s      r   r   z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                    |}| j                  |      }t        j                  |      }| j                  |      }| j	                  t        j                  |            }t        j                  t        j                  |d      d      }||z   }| j                  |      }t        j                  |      }| j                  ||      }| j                  |      }| j                  | j                  |      }||z   S )Nr   )rE   r   swishrF   rH   r3   expand_dimsrI   rK   rL   rM   )r   r'   tembdeterministicresiduals        r   r,   zFlaxResnetBlock2D.__call__~   s     

=1/

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

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

=1)))(3Hx''r   )T)r.   r/   r0   r1   r2   r   r=   floatr>   boolr3   r4   r   r   r,   r5   r   r   r;   r;   N   sD    L#L%!d!{{E399"'R(r   r;   )
flax.linenlinenr   r$   	jax.numpynumpyr3   utilsr   
get_loggerr.   r   Moduler   r7   r;   r5   r   r   <module>r]      sY     
   
		H	%RYY :ryy 2B(		 B(r   