WideCodec / neucodec /tconv /t_first.py
huseinzolkepliscicom's picture
Add neucodec package for self-contained inference
259eeac verified
Raw
History Blame Contribute Delete
974 Bytes
import torch
from torch import nn
from ..distill_layers import Conv1d
from . import base
class V3FirstBlock(base.FirstBlock): # (1, 5, 11, 21, 45)
def __init__(
self,
target_dim,
conv_kernels=(7, 7, 7, 7, 7),
pool_kernels=(1, 5, 11, 21, 45),
dilation_rate=7,
):
h_dim = len(pool_kernels) * 4
super().__init__(h_dim, conv_kernels, pool_kernels, dilation_rate=dilation_rate)
self.conv_1 = Conv1d(h_dim, h_dim * 4, kernel_size=1)
self.act = nn.GELU()
self.conv_2 = Conv1d(h_dim * 4 + 1, target_dim, kernel_size=1)
def forward(self, x):
h = super().forward(x)
h = self.conv_1(h)
h = self.act(h)
y = torch.cat([h, x], dim=1)
y = self.conv_2(y)
return y
FirstBlock = lambda dim: (
V3FirstBlock(
dim,
conv_kernels=(7, 7, 7, 7, 7),
pool_kernels=(1, 5, 11, 21, 45),
dilation_rate=99,
) # fv36
)