This project aims to promote reproducibility and ease of exploration for research and development of disentangled representations through unsupervised learning.
vzoo is disentangled into several modules
core
: Contains aTrainer
used to optimize, evaluate, and visualize an unsupervised model. Commonly benchmarked networks for learning disentangled representations lives here as well.data
: Data loaders for common datasets used to evaluate disentanglement, which includes- dSprites: Disentanglement testing Sprites dataset
- Cars3D: Weakly-supervised Disentangling with Recurrent Transformations for 3D View Synthesis
- Celeba: CelebFaces Attributes Dataset
- MNIST: The MNIST database of handwritten digits
- SVHN: The Street View House Numbers A base disentangled dataset class to support new datasets for modeling lives here as well.
eval
: Evaluation metrics to quantify disentanglement logged to tensorboard. Common metrics include- beta-VAE: beta-VAE: Learning Basic Visual Concepts with a Constrained Variational Framework
- factorVAE: Disentangling by Factorizing
- Disentanglement, Completeness, and Informativeness (DCI): A Framework for the Quantitative Evaluation of Disentangled Representations
- Mutual Information Gap (MIG): Isolating Sources of Disentanglement in Variational Autoencoders
- Modularity and Explicitness: Learning Deep Disentangled Embeddings with the F-Statistic Loss
- Separated Attribute Predictability (SAP): Variational Inference of Disentangled Latent Concepts from Unlabelled Observations
losses
: Losses, regularizations, and operations, which includes- elbo: Auto-Encoding Variationa Bayes
- beta-VAE: beta-VAE: Learning Basic Visual Concepts with a Constrained Variational Framework
- factorVAE: Disentangling by Factorizing
- TC-VAE: Isolating Sources of Disentanglement in VAEs
- DIP-VAE: Variational Inference of Disentangled Latent Concepts from Unlabeled Observations
- InfoGan: InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets
- Wasserstein: Wasserstein Auto-Encoders
models
: Each unsupervised model takes in a function for each network required for training, where each function defines the networks architecture as shown in network.py. Each network is compiled using a function from builders.py to allow easier use of using multiple optimizers.vis
: Tools to visualize latent traversals and manifold representations.
git clone git@github.com:carbonati/variational-zoo.git
cd variational-zoo
pip install .
tired, but will add soon
- Add scripts to execute experiments from previous papers for reproducibility.
- Add unit testing for methods, metrics, and datasets.
- Create google collab notebook with example.
This project was inspired by a wonderful paper Challenging Common Assumptions in the Unsupervised Learning of Disentangled Representations, along with many others mentioned in CITATIONS.md with hopes of expanding upon previous work and serving as a home for new research in disentangled representations through unsupervised learning and representation learning as a whole.
Each scoring function attempts to follow the same notation as presented in each paper. In hindsight this may have been a poor decision as the notation across papers changes significantly, which is rather unfortunate, however, the consistency between the papers and the code may help with understanding one another better.
This project is a work in progress and continuously developed, please don't pet the representations.