CoolFace
Apppublic

antoniomae1234/Seed-VC-characters

sourceHugging Facegpl-3.0updated 2y agoView on Hugging Face
6likes
encodec.cpython-310.pyc114 linesDownload Raw Back to __pycache__
1o

2��yf!0�@s�dZddlZddlZddlZddlZddlmZddlmZ	ddl3mZmZddlZddl
Z
Gdd�dej�Zegd��Zd2d4ejdedejfd
d�Zd3d5ejdededejfdd�Z	d4dejdedededef6dd�Zd4dejdededefdd�Zd5dejdejeefdedefd d!�Zdejdejeeffd"d#�ZGd$d%�d%ej�ZGd&d'�d'ej�Z Gd(d)�d)ej�Z!Gd*d+�d+ej�Z"Gd,d-�d-ej�Z#Gd.d/�d/ej�Z$Gd0d1�d1ej�Z%dS)6z,Convolutional layers wrappers and utilities.�N)�nn)�7functional)�
spectral_norm�weight_normcsFeZdZdZdejeejeej	ff�fdd�Z8�fdd�Z�ZS)�
ConvLayerNormz�9    Convolution-friendly LayerNorm that moves channels to last dimensions10    before running the normalization and moves them back to original position right after.11    �normalized_shapecst�j|fi|��dS�N)�super�__init__)�selfr�kwargs��	__class__��D:\seed-vc\modules\encodec.pyr12szConvLayerNorm.__init__cs(t�|d�}t��|�}t�|d�}dS)Nzb ... t -> b t ...zb t ... -> b ... t)�einopsZ	rearranger	�forward�r�xr
rrrszConvLayerNorm.forward)
�__name__�13__module__�__qualname__�__doc__�tp�Union�int�List�torch�Sizer14r�
__classcell__rrr
rrs&r)�nonerrZtime_layer_norm�15layer_norm�time_group_normr �module�norm�returncCs0|tvsJ�|dkrt|�S|dkrt|�S|S)Nrr)�CONV_NORMALIZATIONSrr)r#r$rrr�apply_parametrization_norm*sr'F�causalcKs�|tvsJ�|dkrt|tjjj�sJ�t|jfi|��S|dkr<|r'td��t|tjjj�s1J�tj	d|jfi|��St�16�S)z�Return the proper normalization module. If causal is True, this will ensure the returned17    module is causal, or return an error if the normalization doesn't support causal evaluation.18    r!r"z,GroupNorm doesn't support causal evaluation.�)r&�19isinstancer�modules�conv�_ConvNdr�out_channels�20ValueError�	GroupNorm�Identity)r#r(r$�norm_kwargsrrr�get_norm_module6sr3r�kernel_size�stride�
padding_totalcCs@|jd}||||d}t�|�d|||}||S)zSee `pad_for_conv1d`.21    �����r))�shape�math�ceil)rr4r5r6�length�n_framesZideal_lengthrrr�get_extra_padding_for_conv1dGs22r=cCst||||�}t�|d|f�S)a�Pad for a convolution to make sure that the last window is full.23    Extra padding is added at the end. This is required to ensure that we can rebuild24    an output of the same length, as otherwise, even with padding, some time steps25    might get removed.26    For instance, with total padding = 4, kernel size = 4, stride = 2:27        0 0 1 2 3 4 5 0 0   # (0s are padding)28        1   2   3           # (output frames of a convolution, last 0 is never used)29        0 0 1 2 3 4 5 0     # (output of tr. conv., but pos. 5 is going to get removed as padding)30            1 2 3 4         # once you removed padding, we are missing one time step !31    r)r=�F�pad)rr4r5r6�
extra_paddingrrr�pad_for_conv1dQsrA�zero��paddings�mode�valuecCs�|jd}|\}}|dkr|dksJ||f��|dkrKt||�}d}||kr4||d}t�|d|f�}t�||||�}	|	jd|}32|	dd|33�fSt�||||�S)z�Tiny wrapper around F.pad, just to allow for reflect padding on small input.34    If this is the case, we insert extra 0 padding to the right before the reflection happen.35    r7r�reflectr).N)r8�maxr>r?)rrDrErFr;�padding_left�
padding_right�max_padZ	extra_pad�padded�endrrr�pad1d`s3637rNcCsX|\}}|dkr|dksJ||f��|||jdksJ�|jd|}|d||�fS)zCRemove padding from x, handling properly zero padding. Only for 1d!rr7.)r8)rrDrIrJrMrrr�unpad1dts38rOc	�LeZdZdZddid�dededejeejff�fdd	�Z	d39d�Z40�ZS)�41NormConv1dz�Wrapper around Conv1d and normalization applied to this conv42    to provide a uniform interface across normalization approaches.43    Fr �r(r$r2r(r$r2c�Dt���ttj|i|��|�|_t|j||fi|��|_||_dSr)	r	r44r'r�Conv1dr,r3r$�	norm_type�rr(r$r2�argsrr
rrr45��4647zNormConv1d.__init__cC�|�|�}|�|�}|Sr�r,r$rrrrr��4849zNormConv1d.forward�rrrr�bool�strr�Dict�Anyr50rrrrr
rrQ}���rQc�FeZdZdZdid�dedejeejff�fdd�Zdd	�Z	�Z51S)52�53NormConv2dz�Wrapper around Conv2d and normalization applied to this conv54    to provide a uniform interface across normalization approaches.55    r �r$r2r$r2csFt���ttj|i|��|�|_t|jfd|d�|��|_||_dS�NF)r(r$)	r	r56r'r�Conv2dr,r3r$rU�rr$r2rWrr
rrr57�s5859zNormConv2d.__init__cCrYrrZrrrrr�r[zNormConv2d.forward�rrrrr^rr_r`r60rrrrr
rrc�s61��rcc	rP)�NormConvTranspose1dz�Wrapper around ConvTranspose1d and normalization applied to this conv62    to provide a uniform interface across normalization approaches.63    Fr rRr(r$r2crSr)	r	r64r'r�ConvTranspose1d�convtrr3r$rUrVr
rrr65�rXzNormConvTranspose1d.__init__cCrYr�rkr$rrrrr�r[zNormConvTranspose1d.forwardr\rrr
rri�raricrb)66�NormConvTranspose2dz�Wrapper around ConvTranspose2d and normalization applied to this conv67    to provide a uniform interface across normalization approaches.68    r rdr$r2cs@t���ttj|i|��|�|_t|jfd|d�|��|_dSre)r	r69r'r�ConvTranspose2drkr3r$rgr
rrr70�s71zNormConvTranspose2d.__init__cCrYrrlrrrrr�r[zNormConvTranspose2d.forwardrhrrr
rrm�s72��rmcsteZdZdZddddddidfdeded	ed73ededed
edededejeej	fdef�fdd�
Z74dd�Z�ZS)�SConv1dz]Conv1d with some builtin handling of asymmetric or causal padding75    and normalization.76    r)TFr rG�in_channelsr.r4r5�dilation�groups�biasr(r$r2�pad_modec
sft���|dkr|dkrt�d|�d|�d|�d��t|||||||||	|77d�78|_||_||_dS)Nr)zKSConv1d has been initialized with stride > 1 and dilation > 1 (kernel_size=z stride=z, dilation=z).)rqrrrsr(r$r2)r	r79�warnings�warnrQr,r(rt)
rrpr.r4r5rqrrrsr(r$r2rtrr
rrr80�s81��82�83�84zSConv1d.__init__cCs�|j\}}}|jjjd}|jjjd}|jjjd}|d|d}||}t||||�}	|jr<t|||	f|jd�}n|d}85||86}t|||87|	f|jd�}|�|�S)Nrr))rE�)	r8r,r4r5rqr=r(rNrt)rr�B�C�Tr4r5rqr6r@rJrIrrrr�s88zSConv1d.forward)
rrrrrr]r^rr_r`r89rrrrr
rro�s4����������rocsbeZdZdZddddifdededed	ed90ededed
ej	eej91ff�fdd�
Zdd�Z�Z
S)�SConvTranspose1dzfConvTranspose1d with some builtin handling of asymmetric or causal padding92    and normalization.93    r)Fr ��?rpr.r4r5r(r$�trim_right_ratior2c	94	sbt���t|||||||d�|_||_||_|js#|jdks#Jd��|jdkr-|jdks/J�dS)NrRr|zB`trim_right_ratio` != 1.0 only makes sense for causal convolutionsrC)r	r95rirkr(r})96rrpr.r4r5r(r$r}r2rr
rrr97�s9899��zSConvTranspose1d.__init__cCs�|jjjd}|jjjd}||}|�|�}|jr/t�||j�}||}t|||f�}|S|d}||}t|||f�}|S)Nrrw)rkr4r5r(r9r:r}rO)rrr4r5r6�yrJrIrrrr�s100�zSConvTranspose1d.forward)rrrrrr]r^�floatrr_r`r101rrrrr
rr{�s&�������
r{cs8eZdZdZddededef�fdd�
Zd	d102�Z�ZS)�SLSTMz~103    LSTM without worrying about the hidden state, nor the layout of the data.104    Expects input as convolutional layout.105    rwT�	dimension�106num_layers�skipcs*t���||_t�|||�|_d|_dSr)r	r107r�r�LSTM�lstm�hidden)rr�r�r�r
rrr108s109110zSLSTM.__init__cCsX|�ddd�}|jr|�|�\}}n111|�||j�\}|_|jr#||}|�ddd�}|S)Nrwrr))�permute�trainingr�r�r�)rrr~�_rrrrsz
SLSTM.forward)rwT)	rrrrrr]r112rrrrr
rr�sr�)r )Fr )r)rBrC)&rr9�typingrrurr�torch.nnrr>�torch.nn.utilsrrr�	LayerNormr�	frozensetr&�Moduler^r'r]r3�Tensorrr=rA�TuplerrNrOrQrcrirmror{r�rrrr�<module>s< ��113�114(	')