ARotting's picture
Publish 2.8K parameter label-free temporal autoencoder
a20d06e verified
Raw
History Blame Contribute Delete
1.07 kB
from __future__ import annotations
import torch
from torch import nn
class TemporalAutoencoder(nn.Module):
def __init__(self, channels: int = 10) -> None:
super().__init__()
self.encoder = nn.Sequential(
nn.Conv1d(channels, 20, kernel_size=3, stride=2, padding=1),
nn.GELU(),
nn.Conv1d(20, 10, kernel_size=3, stride=2, padding=1),
nn.GELU(),
)
self.decoder = nn.Sequential(
nn.ConvTranspose1d(
10,
20,
kernel_size=4,
stride=2,
padding=1,
),
nn.GELU(),
nn.ConvTranspose1d(
20,
channels,
kernel_size=4,
stride=2,
padding=1,
),
)
def forward(self, windows: torch.Tensor) -> torch.Tensor:
return self.decoder(self.encoder(windows))
def parameter_count(model: nn.Module) -> int:
return sum(parameter.numel() for parameter in model.parameters())