This is an implementation of the VQ-VAE (Vector Quantized Variational Autoencoder) and Convolutional Varational Autoencoder. from Neural Discrete representation learning for compressing MNIST and Cifar10. The code is based upon pytorch/examples/vae.
pip install -r requirements.txt
python main.py
# For example
python3 main.py --dataset=cifar10 --model=vqvae --data-dir=~/.datasets --epochs=3
All images are taken from the test set. Top row is the original image. Bottom row is the reconstruction.
k - number of elements in the dictionary. d - dimension of elements in the dictionary (number of channels in bottleneck).
[ ] Implement Continuous Relaxation Training of Discrete Latent Variable Image Models
[ ] Sample using PixelCNN prior
[ ] Improve results on cifar - nearest neighbor should be performed to 10 dictionaries rather than 1
[ ] Improve results on cifar - replace MSE with NLL
[ ] Improve results on cifar - measure bits/dim
[ ] Compare architecture with the offical one
[x] Merge VAE and VQ-VAE for MNIST and Cifar to one script
tf-vaevae for a good reference.