
    wi                         d dl mZ d dlZd dlmZ  G d dej                  Z G d dej                  Z	 G d dej                  Z
dS )    Nc                   H    e Zd ZU eed<   ej        Zej        ed<   d Zd Z	dS )FlaxUpsample2Dout_channelsdtypec                 V    t          j        | j        ddd| j                  | _        d S )N   r	      r   r
   r
   kernel_sizestridespaddingr   nnConvr   r   convselfs    l/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/diffusers/models/resnet_flax.pysetupzFlaxUpsample2D.setup   2    G$*
 
 
			    c                     |j         \  }}}}t          j                            |||dz  |dz  |fd          }|                     |          }|S )N   nearest)shapemethod)r   jaximageresizer   )r   hidden_statesbatchheightwidthchannelss         r   __call__zFlaxUpsample2D.__call__    sb    )6)<&vuh	((&1*eai: ) 
 

 		-00r   N
__name__
__module____qualname__int__annotations__jnpfloat32r   r   r(    r   r   r   r      sT         {E39"""
 
 
    r   r   c                   H    e Zd ZU eed<   ej        Zej        ed<   d Zd Z	dS )FlaxDownsample2Dr   r   c                 V    t          j        | j        ddd| j                  | _        d S )Nr   )r   r   r   r   r   r   s    r   r   zFlaxDownsample2D.setup/   r   r   c                 0    |                      |          }|S )N)r   )r   r#   s     r   r(   zFlaxDownsample2D.__call__8   s     		-00r   Nr)   r1   r   r   r3   r3   +   sT         {E39"""
 
 
    r   r3   c                   t    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dS )FlaxResnetBlock2Din_channelsNr   g        dropout_probuse_nin_shortcutr   c                 2   | 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        |k    n| j        }d | _        |r%t          j        |ddd	| j                  | _        d S d S )
N    gh㈵>)
num_groupsepsilonr   r
   r   r   )r   VALID)r   r8   r   	GroupNormnorm1r   r   conv1Densetime_emb_projnorm2Dropoutr9   dropoutconv2r:   conv_shortcut)r   r   r:   s      r   r   zFlaxResnetBlock2D.setupF   s4   +/+<+Dt''$J[\R>>>
W$*
 
 

  Xl$*EEE\R>>>
z$"344W$*
 
 

 @D?T?\4+|;;bfbw! 	!#"j" " "D	 	r   Tc                    |}|                      |          }t          j        |          }|                     |          }|                     t          j        |                    }t          j        t          j        |d          d          }||z   }|                     |          }t          j        |          }|                     ||          }| 	                    |          }| j
        | 
                    |          }||z   S )Nr   )rA   r   swishrB   rD   r/   expand_dimsrE   rG   rH   rI   )r   r#   tembdeterministicresiduals        r   r(   zFlaxResnetBlock2D.__call__j   s     

=11//

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

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

=11)))(33Hx''r   )T)r*   r+   r,   r-   r.   r   r9   floatr:   boolr/   r0   r   r   r(   r1   r   r   r7   r7   ?   s         L#L%!d!!!{E39"""" " "H( ( ( ( ( (r   r7   )
flax.linenlinenr   r    	jax.numpynumpyr/   Moduler   r3   r7   r1   r   r   <module>rW      s          



          RY   0    ry   (=( =( =( =( =(	 =( =( =( =( =(r   