CoolFace
Apppublic

declare-lab/tango2

sourceHugging Faceupdated 2y agoView on Hugging Face
92likes
unet_1d_blocks.cpython-39.pyc171 linesDownload Raw Back to __pycache__
1a

2��'d!a�@s�ddlZddlZddlmmZddlmZddlmZmZm	Z	m3Z4Gdd�dej�ZGdd�dej�Z
Gd	d5�d6ej�ZGdd�dej�ZGd
d�dej�ZGdd�dej�Zgd�gd�gd�d�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd �d ej�ZGd!d"�d"ej�ZGd#d$�d$ej�ZGd%d&�d&ej�ZGd'd(�d(ej�ZGd)d*�d*ej�Zd+d,�Zd-d.�Zd/d0�Z d1d2�Z!dS)3�N)�nn�)�Downsample1D�ResidualTemporalBlock1D�7Upsample1D�rearrange_dimsc8s(eZdZd�fdd	�	Zd
d9d�Z�ZS)�DownResnetBlock1DNrF� �default��?Tcs�t���||_|dur|n|}||_||_|	|_||_|10|_|durJ|}t|||d�g}t	|�D]}
|�11t|||d��qbt�|�|_
|dkr�dd�|_n.|dkr�t��|_n|dkr�t��|_nd|_d|_|r�t|ddd	�|_dS)12N��	embed_dim�swishcSs13t�|�S�N��F�silu��x�r�T/home/deep/Projects/audio_diffusion/diffusers/src/diffusers/models/unet_1d_blocks.py�<lambda>;�z,DownResnetBlock1D.__init__.<locals>.<lambda>�mishrTr)�use_conv�padding)�super�__init__�in_channels�out_channels�use_conv_shortcut�time_embedding_norm�add_downsample�output_scale_factorr�range�appendr�14ModuleList�resnets�nonlinearity�Mish�SiLU�15downsampler)�selfrr�16num_layers�
conv_shortcut�
temb_channels�groups�17groups_out�
non_linearityr!r#r"r'�_��	__class__rrrs018zDownResnetBlock1D.__init__cCsld}|jd||�}|jdd�D]}|||�}q"||f7}|jdurP|�|�}|jdurd|�|�}||fS)Nrrr)r'r(r+)r,�
hidden_states�temb�
output_states�resnetrrr�forwardGs1920212223zDownResnetBlock1D.forward)24NrFr	r	NNr25rT)N��__name__�26__module__�__qualname__rr:�
__classcell__rrr4rrs�/rc	s(eZdZd�fdd�	Zdd	d27�Z�ZS)
�UpResnetBlock1DNrr	r28rTc
s�t���||_|dur|n|}||_||_|29|_|	|_|durD|}td|||d�g}t|�D]}|�	t|||d��q`t30�|�|_|dkr�dd�|_
n.|dkr�t31��|_
n|dkr�t32��|_
nd|_
d|_|33r�t|dd	�|_dS)34N�rrcSs35t�|�Srrrrrrr{rz*UpResnetBlock1D.__init__.<locals>.<lambda>rrT)�use_conv_transpose)rrrrr!�add_upsampler#rr$r%rr&r'r(r)r*�upsampler)
r,rrr-r/r0r1r2r!r#rCr'r3r4rrrZs.
36zUpResnetBlock1D.__init__cCs||dur"|d}tj||fdd�}|jd||�}|jdd�D]}|||�}q@|jdurd|�|�}|jdurx|�|�}|S)N�����r��dimr)�torch�catr'r(rD�r,r6�res_hidden_states_tupler7�res_hidden_statesr9rrrr:�s37383940zUpResnetBlock1D.forward)	Nrr	r	NNr41rT)NNr;rrr4rr@Ys�-r@cs&eZdZ�fdd�Zddd�Z�ZS)�ValueFunctionMidBlock1Dcspt���||_||_||_t||d|d�|_t|ddd�|_t|d|d|d�|_	t|ddd�|_42dS)NrArT�r�)rrrrr
r�res1r�down1�res2�down2)r,rrr
r4rrr�s43z ValueFunctionMidBlock1D.__init__NcCs0|�||�}|�|�}|�||�}|�|�}|Sr)rPrQrRrS)r,rr7rrrr:�s444546zValueFunctionMidBlock1D.forward)Nr;rrr4rrM�srMcs0eZdZd	eeed��fdd�
Zdd�Z�ZS)47�MidResTemporalBlock1DrFN)r-r"rCc48s�t���||_||_||_t|||d�g}t|�D]}	|�t|||d��q4t�	|�|_49|dkrndd�|_n.|dkr�t��|_n|dkr�t�
�|_nd|_d|_|r�t|dd�|_d|_|r�t|dd�|_|jr�|jr�td	��dS)50NrrcSs51t�|�Srrrrrrr�rz0MidResTemporalBlock1D.__init__.<locals>.<lambda>rrTrNz$Block cannot downsample and upsample)rrrrr"rr$r%rr&r'r(r)r*rDrr+�52ValueError)53r,rrr
r-r"rCr2r'r3r4rrr�s.54 55zMidResTemporalBlock1D.__init__cCsT|jd||�}|jdd�D]}|||�}q|jr>|�|�}|jrP|�|�|_|S)Nrr)r'rDr+�r,r6r7r9rrrr:�s56zMidResTemporalBlock1D.forward)rFFN)r<r=r>�int�boolrr:r?rrr4rrT�s��+rTcs&eZdZ�fdd�Zddd�Z�ZS)�OutConv1DBlockcsdt���tj||ddd�|_t�||�|_|dkr>t��|_|dkrPt�	�|_t�||d�|_57dS)N�rA�rrrr)rrr�Conv1d�final_conv1d_1�	GroupNorm�final_conv1d_gnr*�final_conv1d_actr)�final_conv1d_2)r,�num_groups_outrr
�act_fnr4rrr�s585960zOutConv1DBlock.__init__NcCs<|�|�}t|�}|�|�}t|�}|�|�}|�|�}|Sr)r]rr_r`ra)r,r6r7rrrr:�s61626364zOutConv1DBlock.forward)Nr;rrr4rrY�s65rYcs$eZdZ�fdd�Zdd�Z�ZS)�OutValueFunctionBlockcs@t���t�t�|||d�t��t�|dd�g�|_dS)NrAr)rrrr&�Linearr)�final_block)r,�fc_dimr
r4rrr�s66��zOutValueFunctionBlock.__init__cCs<|�|jdd�}tj||fdd�}|jD]}||�}q*|S)NrrErF)�view�shaperHrIrf)r,r6r7�layerrrrr:s676869zOutValueFunctionBlock.forwardr;rrr4rrd�s70rd)��?��?rlrk)��������?���?rprornrm)� �8n?���Վ?�@Dh����$����<X�?�����?rvrurtrsrrrq)�linear�cubicZlanczos3cs&eZdZd�fdd�	Zdd�Z�ZS)�Downsample1drw�reflectcsBt���||_t�t|�}|jddd|_|�d|�dS)NrrAr�kernel�	rr�pad_moderH�tensor�_kernelsri�pad�register_buffer�r,r{r}�	kernel_1dr4rrr$s7172zDownsample1d.__init__cCsvt�||jfd|j�}|�|jd|jd|jjdg�}tj|jd|jd�}|j�	|�|||f<tj73||dd�S)NrArr��device)�stride)rr�r}�	new_zerosrir{rH�aranger��to�conv1d)r,r6�weight�indicesrrrr:+s74$zDownsample1d.forward)rwrzr;rrr4rry#srycs(eZdZd�fdd�	Zd	dd�Z�ZS)7576Upsample1drwrzcsFt���||_t�t|�d}|jddd|_|�d|�dS)NrArrr{r|r�r4rrr4s7778zUpsample1d.__init__NcCs�t�||jddfd|j�}|�|jd|jd|jjdg�}tj|jd|jd�}|j�	|�|||f<tj79||d|jddd�S)NrrArr�)r�r)rr�r}r�rir{rHr�r�r��conv_transpose1d)r,r6r7r�r�rrrr:;s80 $zUpsample1d.forward)rwrz)Nr;rrr4rr�3sr�cs:eZdZd81�fdd�	Zejejd�dd�Zdd	�Z�ZS)�SelfAttention1dr�cs�t���||_tjd|d�|_||_t�|j|j�|_t�|j|j�|_	t�|j|j�|_82tj|j|jdd�|_tj|dd�|_
dS)Nr)�num_channelsT��bias)�inplace)rr�channelsrr^�83group_norm�	num_headsre�query�key�value�	proj_attn�Dropout�dropout)r,r�n_head�dropout_rater4rrrDs84zSelfAttention1d.__init__)�85projection�returncCs4|��dd�|jdf}|�|��dddd�}|S)NrErrAr�)�sizer�rh�permute)r,r�Znew_projection_shapeZnew_projectionrrr�transpose_for_scoresRsz$SelfAttention1d.transpose_for_scorescCs|}|j\}}}|�|�}|�dd�}|�|�}|�|�}|�|�}|�|�}	|�|�}86|�|�}dt�t�|87jd��}t	�88|	||89�dd�|�}
t	j|
dd�}t	�90||�}|�dddd��
�}|��dd�|jf}|�|�}|�|�}|�dd�}|�|�}||}|S)NrrArE�����rFrr�)rir��	transposer�r�r�r��math�sqrtrH�matmul�softmaxr��91contiguousr�r�rhr�r�)r,r6�residual�batch�channel_dim�seq�92query_proj�key_proj�93value_projZquery_statesZ94key_statesZvalue_states�scale�attention_scores�attention_probsZnew_hidden_states_shape�outputrrrr:Xs,9596979899100101102103104zSelfAttention1d.forward)rr�)	r<r=r>rrH�Tensorr�r:r?rrr4rr�Csr�cs&eZdZd�fdd�	Zdd�Z�ZS)�ResConvBlockFcs�t���||_||k|_|jr4tj||ddd�|_tj||ddd�|_t�d|�|_	t�105�|_tj||ddd�|_|js�t�d|�|_
t�106�|_dS)NrFr�rZrAr[)rr�is_last�
has_conv_skiprr\�	conv_skip�conv_1r^�group_norm_1�GELU�gelu_1�conv_2�group_norm_2�gelu_2)r,r�mid_channelsrr�r4rrr~s107108109zResConvBlock.__init__cCsb|jr|�|�n|}|�|�}|�|�}|�|�}|�|�}|jsV|�|�}|�|�}||}|Sr)	r�r�r�r�r�r�r�r�r�)r,r6r�r�rrrr:�s110111112113114115zResConvBlock.forward)Fr;rrr4rr�}sr�cs(eZdZd�fdd�	Zddd�Z�ZS)�UNetMidBlock1DNc	s�t���|dur|n|}td�|_t|||�t|||�t|||�t|||�t|||�t|||�g}t||d�t||d�t||d�t||d�t||d�t||d�g}tdd�|_t�	|�|_116t�	|�|_dS)Nrxr	�r{)rrry�downr�r�r��uprr&�117attentionsr')r,r�rrr'r�r4rrr�s(118119120121122123124125�	�zUNetMidBlock1D.__init__cCs@|�|�}t|j|j�D]\}}||�}||�}q|�|�}|Sr)r��zipr�r'r�)r,r6r7�attnr9rrrr:�s126127128zUNetMidBlock1D.forward)N)Nr;rrr4rr��sr�cs(eZdZd�fdd�	Zddd�Z�ZS)�AttnDownBlock1DNcs�t���|dur|n|}td�|_t|||�t|||�t|||�g}t||d�t||d�t||d�g}t�|�|_t�|�|_	dS)Nrxr	)129rrryr�r�r�rr&r�r')r,rrr�r'r�r4rrr�s130131132133134��zAttnDownBlock1D.__init__cCs<|�|�}t|j|j�D]\}}||�}||�}q||ffSr)r�r�r'r�)r,r6r7r9r�rrrr:�s135136137zAttnDownBlock1D.forward)N)Nr;rrr4rr��sr�cs(eZdZd�fdd�	Zddd�Z�ZS)�DownBlock1DNcsVt���|dur|n|}td�|_t|||�t|||�t|||�g}t�|�|_dS)Nrx)rrryr�r�rr&r'�r,rrr�r'r4rrr�s138139140141142�zDownBlock1D.__init__cCs(|�|�}|jD]}||�}q||ffSr)r�r'rVrrrr:�s143144145zDownBlock1D.forward)N)Nr;rrr4rr��s
r�cs(eZdZd�fdd�	Zddd�Z�ZS)�DownBlock1DNoSkipNcsLt���|dur|n|}t|||�t|||�t|||�g}t�|�|_dSr�rrr�rr&r'r�r4rrr�s146147148149�zDownBlock1DNoSkip.__init__cCs0tj||gdd�}|jD]}||�}q||ffS)NrrF�rHrIr'rVrrrr:	s150151zDownBlock1DNoSkip.forward)N)Nr;rrr4rr��sr�cs(eZdZd�fdd�	Zddd�Z�ZS)�
AttnUpBlock1DNcs�t���|dur|n|}td|||�t|||�t|||�g}t||d�t||d�t||d�g}t�|�|_t�|�|_tdd�|_	dS)NrAr	rxr�)152rrr�r�rr&r�r'r�r�)r,rrr�r'r�r4rrrs153154155��zAttnUpBlock1D.__init__cCsP|d}tj||gdd�}t|j|j�D]\}}||�}||�}q(|�|�}|S�NrErrF)rHrIr�r'r�r�)r,r6rKr7rLr9r�rrrr:%s156157zAttnUpBlock1D.forward)N)Nr;rrr4rr�sr�cs(eZdZd�fdd�	Zddd�Z�ZS)�	UpBlock1DNcs\t���|dur|n|}td|||�t|||�t|||�g}t�|�|_tdd�|_dS)NrArxr�)rrr�rr&r'r�r��r,rrr�r'r4rrr3s158159160�zUpBlock1D.__init__cCs<|d}tj||gdd�}|jD]}||�}q |�|�}|Sr�)rHrIr'r�rJrrrr:@s161162163zUpBlock1D.forward)N)Nr;rrr4rr�2s
r�cs(eZdZd�fdd�	Zddd�Z�ZS)�UpBlock1DNoSkipNcsTt���|dur|n|}td|||�t|||�t|||dd�g}t�|�|_dS)NrAT)r�r�r�r4rrrMs164165�zUpBlock1DNoSkip.__init__cCs2|d}tj||gdd�}|jD]}||�}q |Sr�r�rJrrrr:Ys166167168zUpBlock1DNoSkip.forward)N)Nr;rrr4rr�Lsr�cCsh|dkrt|||||d�S|dkr.t||d�S|dkrBt||d�S|dkrVt||d�St|�d���dS)Nr)rr-rr/r"r�)rrr�r�� does not exist.)rr�r�r�rU)�down_block_typer-rrr/r"rrr�get_down_blockcs�r�cCsh|dkrt|||||d�S|dkr.t||d�S|dkrBt||d�S|dkrVt||d�St|�d���dS)Nr@)rr-rr/rCr�)rrr�r�r�)r@r�r�r�rU)�
up_block_typer-rrr/rCrrr�get_up_blockus�r�cCsX|dkrt|||||d�S|dkr0t|||d�S|dkrFt|||d�St|�d���dS)NrT)r-rrr
r"rM)rrr
r�)rr�rr�)rTrMr�rU)�mid_block_typer-rr�rr
r"rrr�
get_mid_block�s�r�cCs,|dkrt||||�S|dkr(t||�SdS)NrYZ
ValueFunction)rYrd)�out_block_typerbr
rrcrgrrr�
get_out_block�s169170r�)"r�rHZtorch.nn.functionalr�171functionalrr9rrrr�Modulerr@rMrTrYrdrryr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr�<module>s:B@9�:"(!