CoolFace
Apppublic

declare-lab/tango2

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

2��'d�\�@s�ddlZddlmZddlmZmZmZmZddlmZddl	m3Z4dd5d�Zddd
�ZGdd�dej
�ZGdd�dej
�ZGdd�dej
�ZGdd�dej
�ZGdd�dej
�ZdS)�N)�nn�)�Downsample2D�
ResnetBlock2D�TemporalConvLayer�6Upsample2D)�Transformer2DModel)�TransformerTemporalModelFT�defaultcCsv|dkr$t||||||||	||d�7S|dkrd|8dur<td��t||||||||	||9|||
|||d�St|�d���dS)N�DownBlock3D)1011num_layers�in_channels�out_channels�
temb_channels�add_downsample�12resnet_eps�
resnet_act_fn�
resnet_groups�downsample_padding�resnet_time_scale_shift�CrossAttnDownBlock3Dz>cross_attention_dim must be specified for CrossAttnDownBlock3D)rr
rrrrrrr�cross_attention_dim�attn_num_head_channels�dual_cross_attention�use_linear_projection�only_cross_attention�upcast_attentionr� does not exist.)r�13ValueErrorr)�down_block_typerr
rrrrrrrrrrrrrr�r �T/home/deep/Projects/audio_diffusion/diffusers/src/diffusers/models/unet_3d_blocks.py�get_down_blocksF��r"cCsv|dkr$t|||||||||14|d�15S|dkrd|dur<td��t|||||||||16||	||
|||d�St|�d���dS)N�	UpBlock3D)17rr
r�prev_output_channelr�add_upsamplerrrr�CrossAttnUpBlock3Dz<cross_attention_dim must be specified for CrossAttnUpBlock3D)rr
rr$rr%rrrrrrrrrrr)r#rr&)�
up_block_typerr
rr$rr%rrrrrrrrrrr r r!�get_up_blockOsF��r(c
s>eZdZdeeeeeeeeed�	�fdd
�
Zddd�Z�Z	S)�UNetMidBlock3DCrossAttn�r�����ư>r18�swish� T��?�F)	r
r�dropoutrrrrr�resnet_pre_normcst���d|_|19|_|dur"|nt|dd�}t||||||||||	d�20g}t||dd�g}g}g}t|�D]z}|�t	||21|22|d||||d��|�t23||24|25|d||d	��|�t||||||||||	d�26�|�t||dd��qnt�|�|_
t�|�|_t�|�|_t�|�|_dS)27NT�r-�28r
rr�eps�groupsr0�time_embedding_norm�
non_linearity�output_scale_factor�pre_norm皙�����?�r0r)r
rr�norm_num_groupsrr�r
rrr<)�super�__init__�has_cross_attentionr�minrr�range�appendrr	r�29ModuleList�resnets�30temp_convs�31attentions�temp_attentions)�selfr
rr0rrrrrr1rr8rrrrrErFrGrH�_��	__class__r r!r?�s�32��������33����z UNetMidBlock3DCrossAttn.__init__NcCs�|jd||�}|jd||d�}t|j|j|jdd�|jdd��D]@\}}}	}34||||d�j}|||d�j}|	||�}|35||d�}qH|S)Nr��36num_framesr��encoder_hidden_states�cross_attention_kwargs)rErF�ziprGrH�sample)rI�
hidden_states�tembrP�attention_maskrNrQ�attn�	temp_attn�resnet�	temp_convr r r!�forward�s	 ��37zUNetMidBlock3DCrossAttn.forward)
r*rr+r38r,r-Trr.r/FTF)NNNrN�39�__name__�40__module__�__qualname__�int�float�str�boolr?r[�
__classcell__r r rKr!r)�s<��f�r)cs@eZdZdeeeeeeeeeed�41�fdd
�
Zddd�Z�Z	S)rr*rr+r42r,r-Tr/r.F�43r
rrr0rrrrrr1cs t���g}g}g}g}d|_||_t|�D]�}|dkr>|n|}|�t|||||	||||
|44d�45�|�t||dd��|�t||||d||	|||d�	�|�t	||||d||	d��q.t46�|�|_t47�|�|_
t48�|�|_t49�|�|_|�rt50�t|d||d	d51�g�|_nd|_d|_dS)NTrr3r:r;r�r
rrr<rrrr=�op��use_convr�padding�nameF)r>r?r@rrBrCrrrr	rrDrErFrGrHr�downsamplers�gradient_checkpointing)rIr
rrr0rrrrrr1rrr8rrrrrrrErGrHrF�irKr r!r?s�52������
��5354���zCrossAttnDownBlock3D.__init__Nc
Cs�d}t|j|j|j|j�D]J\}}	}55}|||�}|	||d�}|56|||d�j}|||d�j}||f7}q|jdur�|jD]}||�}qv||f7}||fS)Nr rMrO)rRrErFrGrHrSrl)
rIrTrUrPrVrNrQ�
output_statesrYrZrWrX�downsamplerr r r!r[es$57�58�59606162zCrossAttnDownBlock3D.forward)r*rr+r63r,r-Trr/r.rTFFFF)NNNrNr\r r rKr!rsD��b�rcs@eZdZdeeeeeeeeeed	�64�fd65d�
Zdd
d�Z�Z	S)rr*rr+r66r,r-Tr.recs�t���g}g}t|�D]J}|dkr*|n|}|�t|||||	|||||67d�68�|�t||dd��qt�|�|_t�|�|_	|r�t�t69|d||
dd�g�|_nd|_d|_dS)	Nrr3r:r;TrgrhF)
r>r?rBrCrrrrDrErFrrlrm)rIr
rrr0rrrrrr1r8rrrErFrnrKr r!r?�sJ70����71���zDownBlock3D.__init__NcCsld}t|j|j�D](\}}|||�}|||d�}||f7}q|jdurd|jD]}||�}qL||f7}||fS)Nr rM)rRrErFrl)rIrTrUrNrorYrZrpr r r!r[�s7273747576zDownBlock3D.forward)77r*rr+r78r,r-Tr.Tr)Nrr\r r rKr!r�s.��<rcsBeZdZdeeeeeeeeeeed��fdd
�
Zddd�Z�Z	S)r&r*rr+r79r,r-Tr/r.F)r
rr$rr0rrrrrr1cs4t���g}g}g}g}d|_||_t|�D]�}||dkrB|n|}|dkrR|n|}|�t||||||80|||	||d�81�|�t||dd��|�t||||d|
|82|||d�	�|�t	||||d|
|83d��q.t84�|�|_t85�|�|_
t86�|�|_t87�|�|_|�r$t88�t|d|d	�g�|_nd|_d89|_dS)NTrrr3r:r;rfr=�rirF)r>r?r@rrBrCrrrr	rrDrErFrGrHr�90upsamplersrm)rIr
rr$rr0rrrrrr1rrr8r%rrrrrErFrGrHrn�res_skip_channels�resnet_in_channelsrKr r!r?�s|91������
��92zCrossAttnUpBlock3D.__init__Nc	Cs�t|j|j|j|j�D]f\}	}93}}|d}
|dd�}tj||
gdd�}|	||�}|94||d�}||||d�j}|||d�j}q|jdur�|jD]}|||�}q�|S)N�����r��dimrMrO)	rRrErFrGrH�torch�catrSrr)rIrT�res_hidden_states_tuplerUrP�
upsample_sizerVrNrQrYrZrWrX�res_hidden_states�	upsamplerr r r!r[3s$�95�9697zCrossAttnUpBlock3D.forward)r*rr+r98r,r-Trr/r.TFFFF)NNNNrNr\r r rKr!r&�sF��_�r&c
sBeZdZdeeeeeeeeeeed	��fd99d�
Zdd
d�Z�Z	S)r#r*rr+r100r,r-Tr.)r
r$rrr0rrrrrr1cs�t���g}g}t|�D]b}||dkr.|n|}|dkr>|n|}|�t||||||101|||	||d�102�|�t||dd��qt�|�|_t�|�|_	|
r�t�t103|d|d�g�|_nd|_d|_dS)	Nrrr3r:r;TrqF)
r>r?rBrCrrrrDrErFrrrrm)rIr
r$rrr0rrrrrr1r8r%rErFrnrsrtrKr r!r?XsB104����zUpBlock3D.__init__Nc105Csxt|j|j�D]D\}}|d}|dd�}tj||gdd�}|||�}|||d�}q|jdurt|jD]}	|	||�}qd|S)NrurrvrM)rRrErFrxryrr)106rIrTrzrUr{rNrYrZr|r}r r r!r[�s107108109zUpBlock3D.forward)	r*rr+r110r,r-Tr.T)NNrr\r r rKr!r#Ws.��8r#)NNNFTFFr111)NNFTFFr112)rxrrYrrrr�transformer_2dr�transformer_temporalr	r"r(�Moduler)rrr&r#r r r r!�<module>s8
�113C�1148~O