The Great Autoencoder Bake Off

Overview

The Great Autoencoder Bake Off

The companion repository to a post on my blog. It contains all you need to reproduce the results.

Features

Currently featured autoencoders:

  • Shallow AE
  • Deep (vanilla) AE
  • Stacked AE
  • Sparse AE
  • Denoising AE
  • VAE
  • beta-VAE
  • vq-VAE

They are evaluated on MNIST for the following tasks:

  • Reconstruction quality
  • Quality of decoded samples from the latent space (if possible)
  • Quality of latent space interpolation
  • Structure of the latent space visualized with UMAP
  • ROC curve for anomaly detection with the reconstruction error
  • Classification accuracy of a linear layer fitted on the autoencoder's features

Installation

Clone the repository and create a new conda environment with:

conda create -n ae_bakeoff python=3.7
conda activate ae_bakeoff
conda install --file requirements.txt -c pytorch -c conda-forge

Verify the installation by running the tests:

cd ./tests
export PYTHONPATH="../src"
python -m unittest

Usage

To one-click reproduce all results, call:

cd ./src
python reproduce.py --batch_size 256 [--gpu]

If you want to run any specific experiment, call:

python run.py <autoencoder_type> --batch_size 256 [--gpu] [--anomaly]
You might also like...
This project uses reinforcement learning on stock market and agent tries to learn trading. The goal is to check if the agent can learn to read tape. The project is dedicated to hero in life great Jesse Livermore.

Reinforcement-trading This project uses Reinforcement learning on stock market and agent tries to learn trading. The goal is to check if the agent can

RepVGG: Making VGG-style ConvNets Great Again

This repository is the code that needs to be submitted for OpenMMLab Algorithm Ecological Challenge,the paper is RepVGG: Making VGG-style ConvNets Great Again

A discord Server Bot made with Python, This bot helps people feel better by inspiring them with motivational quotes or by responding with a great message, also the users of the server can create custom messages by telling the bot with Commands.
A discord Server Bot made with Python, This bot helps people feel better by inspiring them with motivational quotes or by responding with a great message, also the users of the server can create custom messages by telling the bot with Commands.

A discord Server Bot made with Python, This bot helps people feel better by inspiring them with motivational quotes or by responding with a great message, also the users of the server can create custom messages by telling the bot with Commands.

A sentence search engine that fetches examples from trusted news/media organisations. Great for writing better English.

A sentence search engine that fetches examples from trusted news/media websites. Great for improving writing & speaking better English.

The Simpsons and Machine Learning: What makes an Episode Great?

The Simpsons and Machine Learning: What makes an Episode Great? Check out my Medium article on this! PROBLEM: The Simpsons has had a decline in qualit

Info for The Great DataTas plot-a-thon
Info for The Great DataTas plot-a-thon

The Great DataTas plot-a-thon Datatas is organising a Data Visualisation competition: The Great DataTas plot-a-thon We will be using Tidy Tuesday data

neo Tool is great one in binary exploitation topic
neo Tool is great one in binary exploitation topic

neo Tool is great one in binary exploitation topic. instead of doing several missions by many tools and windows, you can now automate this in one tool in one session.. Enjoy it

Blender addon that enables exporting of xmodels from blender. Great for custom asset creation for cod games
Blender addon that enables exporting of xmodels from blender. Great for custom asset creation for cod games

Birdman's XModel Tools For Blender Greetings everyone in the custom cod community. This blender addon should finally enable exporting of custom assets

A great and handy python obfuscator for protecting code.
A great and handy python obfuscator for protecting code.

Python Code Obfuscator A handy and necessary tool that can protect your code anytime! Mostly Command Line tool that will obfuscate your code. Features

Athens: a great tool for taking notes and organising knowldge
Athens: a great tool for taking notes and organising knowldge

AthensSyncer Athens is a great tool for taking notes and organising knowldge. But it is a bummer that you cannot use it accross multiple devices. Well

Get input from OLED Joystick, Runs command, Displays output on OLED Screen (Great for P4wnP1)

p4wnsolo-joyterm Gets text input from OLED Joystick Runs the command you typed Displays output on OLED Screen (Great for P4wnP1 - even better on Raspb

A great python/java dynamic DNS service for NameSilo, with log, email reminder...
A great python/java dynamic DNS service for NameSilo, with log, email reminder...

English NameSilo DDNS is a DDNS service for NameSilo domain names for home broadband , it can automatically detect IP changes in home broadband

Automatically pulls specified repository whenever a specified file is pushed. Great for working collaboratively when you need to run something locally.

autopull Simple python tool that allows you to automatically pull from a github repository whenever a file with a specified name is uploaded installat

This Open-Source project is great for sensor capture and storage solutions.

Phase 1 This project helps developers in the creation of extended realities that communicate with Arduino and require the security of blockchain stora

StrongSORT: Make DeepSORT Great Again
StrongSORT: Make DeepSORT Great Again

StrongSORT StrongSORT: Make DeepSORT Great Again StrongSORT: Make DeepSORT Great Again Yunhao Du, Yang Song, Bo Yang, Yanyun Zhao arxiv 2202.13514 Abs

Speech Enhancement Generative Adversarial Network Based on Asymmetric AutoEncoder
Speech Enhancement Generative Adversarial Network Based on Asymmetric AutoEncoder

ASEGAN: Speech Enhancement Generative Adversarial Network Based on Asymmetric AutoEncoder 中文版简介 Readme with English Version 介绍 基于SEGAN模型的改进版本,使用自主设计的非

Official Implementation of Swapping Autoencoder for Deep Image Manipulation (NeurIPS 2020)
Official Implementation of Swapping Autoencoder for Deep Image Manipulation (NeurIPS 2020)

Swapping Autoencoder for Deep Image Manipulation Taesung Park, Jun-Yan Zhu, Oliver Wang, Jingwan Lu, Eli Shechtman, Alexei A. Efros, Richard Zhang UC

An unofficial implementation of the paper "AutoVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss".

AutoVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss This is an unofficial implementation of AutoVC based on the official one. The reposi

Clockwork Variational Autoencoder
Clockwork Variational Autoencoder

Clockwork Variational Autoencoders (CW-VAE) Vaibhav Saxena, Jimmy Ba, Danijar Hafner If you find this code useful, please reference in your paper: @ar

Comments
  • In re: your Reddit post

    In re: your Reddit post

    You posted on Reddit.

    I think this is very cool.

    In the Reddit post you ask if you missed any AE types, but in the blog post you encourage people to add PRs to add AE types. I'm too new to do the latter, so I'm just going to mention the names I know.

    Your existing types:

    • Shallow AE
    • Deep (vanilla) AE
    • Stacked AE
    • Sparse AE
    • Denoising AE
    • VAE
    • beta-VAE
    • vq-VAE

    I'm curious to see if vqVAE2 does better than 1 in here.

    This list doesn't have

    • TD-VAE,
    • Contractive AE,
    • Undercomplete AE,
    • Convolutional AE,
    • Pixel VAE,
    • Conditional VAE,
    • DFC VAE,
    • Derivative Penalized VAE,
    • Stacked Similarity-Aware AE,
    • Replacement AE,
    • AE2-Net,
    • VAE-SNE,
    • Correspondence AE,
    • Adversarial Conditional AE,
    • Prior Flow VAE,
    • Factorized Gaussian Process VAE,
    • Scalable Gaussian Process VAE,
    • Sparse Gaussian Process VAE,
    • VAE-LSTM,
    • LSTM-based VAE (actually very different,)
    • SNF-CVAE,
    • MAD-VAE,
    • Disentangled Causal Effect VAE,
    • Coupled VAE,
    • Triplet Enhanced Autoencoder,
    • Hypergraph VAE,
    • Exemplar VAE,
    • Autoencoding VAE (amusingly it's a good name,)
    • Geometry-aware Hamiltonian VAE,
    • Quaternion-valued VAE,
    • Heirarchal Latent Embedding VQ-VAE,
    • Dirichlet Graph VAE,
    • Discriminative Mixture VAE,
    • Complex-valued VAE,
    • Variational Recurrent AE,
    • NCP-VAE,
    • Targeted VAE,
    • Heirarchical Sparse VAE,
    • Discrete Memory Addressing VAE,
    • Multi-adversarial VAE,
    • VAE-BRIDGE,
    • Cycle VAE,
    • Dynamic VAE,
    • DCAVN,
    • Ordinal Content VAE,
    • Quasi-symplectic Langevin VAE,
    • Stochastic Recurrent Networks,
    • Deep Kalman Filters,
    • Kalman VAEs,
    • Stochastic Recurrent NNs,
    • Disentangled Sequential AEs,
    • Neural Adaptive Sequential Monte Carlo

    and arguably

    • Variational Converter-Encoder

    plus things that don't apply, except maybe they do because gpt-3 makes images, like

    • Plan CVAE,
    • Condition-Transforming VAE,
    • Disentangled Causal Representation Learning
    opened by StoneCypher 3
Releases(v1.2)
  • v1.2(Mar 23, 2021)

    I am a dummy and forgot a power of two in the calculation of the anomaly score. This resulted in invalid scores. I now use BCE as a score to be consistent with training.

    Blog update will follow.

    Source code(tar.gz)
    Source code(zip)
  • v1.1(Mar 3, 2021)

    This release adds the MNIST alternatives Fashion-MNIST (FMNIST) and Kuzushiji-MNIST (KMNIST) as additional datasets. They are usable via the new CLI argument --dataset. The logs directory now has a sub-directory for each dataset.

    The training time of each autoencoder is now recorded and rendered as a markdown table.

    All changes are reflected in the results.

    Source code(tar.gz)
    Source code(zip)
Owner
Tilman Krokotsch
PhD student Deep Learning for Predictive Mainenance
Tilman Krokotsch
Blender addon that enables exporting of xmodels from blender. Great for custom asset creation for cod games

Birdman's XModel Tools For Blender Greetings everyone in the custom cod community. This blender addon should finally enable exporting of custom assets

wast 2 Jul 2, 2022
This Open-Source project is great for sensor capture and storage solutions.

Phase 1 This project helps developers in the creation of extended realities that communicate with Arduino and require the security of blockchain stora

Wolfberry, LLC 10 Dec 28, 2022
Capture screen and download off Roku based devices

rokuview Capture screen and download off Roku based devices Tested on Hisense TV with Roku OS built-in No guarantee this will work with all Roku model

null 3 May 27, 2021
Turn crypto miner on/off depending on powerwall charge level

Mining Crypto with Tesla Solar and Powerwalls This script turns a crypto miner on and off when the Tesla Powerwall level drops/rises above a certain t

Matt 1 Nov 9, 2021
A place where one-off ideas/partial projects can live comfortably

A place to post ideas, partial projects, or anything else that doesn't necessarily warrant its own repo, from my mind to the web.

Carson Scott 2 Feb 25, 2022
Adds a Bake node to Blender's shader node system

Bake to Target This Blender Addon adds a new shader node type capable of reducing the texture-bake step to a single button press. Please note that thi

Thomas 8 Oct 4, 2022
CoSMA: Convolutional Semi-Regular Mesh Autoencoder. From Paper "Mesh Convolutional Autoencoder for Semi-Regular Meshes of Different Sizes"

Mesh Convolutional Autoencoder for Semi-Regular Meshes of Different Sizes Implementation of CoSMA: Convolutional Semi-Regular Mesh Autoencoder arXiv p

Fraunhofer SCAI 10 Oct 11, 2022
RepVGG: Making VGG-style ConvNets Great Again

RepVGG: Making VGG-style ConvNets Great Again (PyTorch) This is a super simple ConvNet architecture that achieves over 80% top-1 accuracy on ImageNet

null 2.8k Jan 4, 2023
Typer, build great CLIs. Easy to code. Based on Python type hints.

Typer, build great CLIs. Easy to code. Based on Python type hints. Documentation: https://typer.tiangolo.com Source Code: https://github.com/tiangolo/

Sebastián Ramírez 10.1k Jan 2, 2023
Your Project with Great Documentation.

Read Latest Documentation - Browse GitHub Code Repository The only thing worse than documentation never written, is documentation written but never di

Timothy Edmund Crosley 809 Dec 28, 2022