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 library for building and training autoencoders.

logo

PyPI License: MIT 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)

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
from pyautoencoder.loss import VAELoss

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

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

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

# Loss
criterion = VAELoss(beta=1.0, likelihood="gaussian")
optimizer = torch.optim.Adam(vae.parameters())
for x in dataloader:
    optimizer.zero_grad()
    out = vae(x)
    losses = criterion(out, x)
    losses.total.backward() # negative ELBO
    optimizer.step()

    # optional: log components
    log_likelihood = losses.components["log_likelihood"]
    kl_divergence = losses.components["kl_divergence"]

Built‑in models

  • AE — standard Autoencoder

    from pyautoencoder.vanilla import AE
    from pyautoencoder.loss import AELoss
    ae = AE(encoder=encoder, decoder=decoder)
    criterion = AELoss(likelihood="gaussian") # or bernoulli
    
  • VAE — Variational Autoencoder

    from pyautoencoder.variational import VAE, VAELoss
    from pyautoencoder.loss import VAELoss
    vae = VAE(encoder=encoder, decoder=decoder, latent_dim=32)
    criterion = VAELoss(beta=1.0, likelihood="gaussian") # or bernoulli
    

Examples

See the examples/ folder for runnable scripts showing example of usage.

License

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

Citation

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

@misc{pollastro2025pyautoencoder,
  author       = {Andrea Pollastro},
  title        = {pyautoencoder},
  year         = {2025},
  howpublished = {GitHub repository},
  url          = {https://github.com/andrea-pollastro/pyautoencoder}
}

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.0.7.tar.gz (15.2 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.0.7-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyautoencoder-1.0.7.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for pyautoencoder-1.0.7.tar.gz
Algorithm Hash digest
SHA256 64583b4c6db1702e7a8d03c1de9c667e2dc8d9bec3538986fdb88dc3999ea02b
MD5 9e2c12a5593376d175438cdab2a95827
BLAKE2b-256 0f44f3676cd6ea089997c150c0ec77fdc374f23604cf945a5a179c1afdf86370

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyautoencoder-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 16.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for pyautoencoder-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 7dbd9164297232f710c8283c715d59ed12b62dba16c7f2bafc908a67bd84ecd5
MD5 8b660751eb310d91434569466a7f6eb5
BLAKE2b-256 70c9bf4919e0f16ab635eff574ff8150e70806d80c8441b6237e08b3b7e6245d

See more details on using hashes here.

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