Skip to main content

A Python package offering implementations of state-of-the-art autoencoder architectures in PyTorch.

Project description

PyAutoencoder

A clean, modular PyTorch-based library for building and training autoencoders.

logo

PyPI Version Python CI Publish to PyPI License: MIT Downloads Documentation Status Stars


Highlights

PyAutoencoder is designed to offer simple and easy access to autoencoder frameworks. Here's what it offers:

  • Minimal, composable API
    You don't have to inherit from complicated base classes or learn a new training loop. Simply provide your own PyTorch nn.Module encoder and decoder, and plug them into the ready‑to‑use autoencoder wrappers. This makes it easy to experiment with different architectures (e.g. MLPs, CNNs) while reusing the same training pipeline.

  • Ready‑to‑use autoencoders The library ships with working implementations of autoencoders, each paired with their respective loss functions. You can start training in a few lines, without re‑implementing reconstruction likelihoods, KL divergence, or other boilerplate.

  • PyTorch compatibility
    The library is fully compatible with the PyTorch ecosystem, so models integrate naturally with modules, tensors, optimizers, and schedulers.

  • Lightweight, research‑oriented
    The library is intentionally minimal: no training loop frameworks, no heavy abstractions. This makes it well suited for research prototypes where you want control and transparency.

Status: The project is in an early but usable stage. Contributions, issues, and feedback are highly encouraged!

Currently implemented:

  • Autoencoder (AE)
  • Variational Autoencoder (VAE)
  • Adaptive Group Variational Autoencoder (Ada-GVAE)

Documentation

Full documentation (installation, tutorials, API reference, and examples) is available at:

👉 https://pyautoencoder.readthedocs.io/en/latest/


Installation

pip install pyautoencoder

Or install from source for development:

git clone https://github.com/andrea-pollastro/pyautoencoder.git
cd pyautoencoder
pip install -e .

Quick start

import torch
import torch.nn as nn
from pyautoencoder.variational import VAE

# Define encoder/decoder
latent_dim = 32
encoder = nn.Sequential(
    nn.Linear(784, 512), 
    nn.ReLU(),
)

decoder = nn.Sequential(
    nn.Linear(latent_dim, 512), 
    nn.ReLU(),
    nn.Linear(512, 784)
)

# Model
vae = VAE(encoder=encoder, decoder=decoder, latent_dim=latent_dim)

optimizer = torch.optim.Adam(vae.parameters())
for x in dataloader:
    optimizer.zero_grad()
    out = vae(x)
    loss_results = vae.compute_loss(out, x, beta=1, likelihood='bernoulli')
    loss_results.objective.backward() # negative ELBO
    optimizer.step()
    # optional: log components
    log_likelihood = loss_results.diagnostics["log_likelihood"]
    kl_divergence = loss_results.diagnostics["kl_divergence"]

Examples

The examples/ directory contains runnable scripts, including:

  • mnist_ae.py – standard Autoencoder on MNIST
  • mnist_vae_kingma2013.py – reproduction of the MNIST VAE experiment from Kingma & Welling (2013), Fig. 2

These examples are also documented and explained in the online documentation.


License

This project is released under the MIT License. See LICENSE.

Citation

If you use this package in academic work, please cite:

@article{pollastro2025sincvae,
  title={SincVAE: A new semi-supervised approach to improve anomaly detection on EEG data using SincNet and variational autoencoder},
  author={Pollastro, Andrea and Isgr{\`o}, Francesco and Prevete, Roberto},
  journal={Computer Methods and Programs in Biomedicine Update},
  pages={100213},
  year={2025},
  publisher={Elsevier}
}

Acknowledgments

This work was funded by the PNRR MUR project PE0000013-FAIR (CUP: E63C25000630006).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyautoencoder-1.1.4.tar.gz (418.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyautoencoder-1.1.4-py3-none-any.whl (22.9 kB view details)

Uploaded Python 3

File details

Details for the file pyautoencoder-1.1.4.tar.gz.

File metadata

  • Download URL: pyautoencoder-1.1.4.tar.gz
  • Upload date:
  • Size: 418.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyautoencoder-1.1.4.tar.gz
Algorithm Hash digest
SHA256 c7d3caada7b740fce8bb5216b8a7293878f2dda79b74c9c34e3a5d9dd0c496e1
MD5 47c8271872e4acc587cc43451c467781
BLAKE2b-256 e8991990d4216588daf0b072da9913f8dabe473039b77c76caa696cd556d892e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyautoencoder-1.1.4.tar.gz:

Publisher: publish.yml on andrea-pollastro/pyautoencoder

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyautoencoder-1.1.4-py3-none-any.whl.

File metadata

  • Download URL: pyautoencoder-1.1.4-py3-none-any.whl
  • Upload date:
  • Size: 22.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyautoencoder-1.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fab8afcb4c80c021c71c2ffefa9f240f9b20721cf0d5fda2b9ab34d61b0d5c63
MD5 309a1e8d76554159cfe71bec6c23cf40
BLAKE2b-256 b4d3f58504183fafffdc0dc58036b423c3ca57420530fae5d0b3046f9a817741

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyautoencoder-1.1.4-py3-none-any.whl:

Publisher: publish.yml on andrea-pollastro/pyautoencoder

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page