This library contains a Tensorflow implementation of the hyperspherical variational auto-encoder, or S-VAE, as presented in [1](link to our paper).
- python>=3.6
- tensorflow>=1.7.0: http://tensorflow.org
- scipy: https://scipy.org
To install, run
$ python setup.py install
- distributions: Tensorflow implementation of the von Mises-Fisher and hyperspherical Uniform distributions. Both inherit from
tf.distributions.Distribution
- ops: Low-level operations used for computing the exponentially scaled modified Bessel function of the first kind and its derivative.
- examples: Example code for using the library within a Tensorflow project
Please have a look into the examples folder. We adapted our implementation to follow the structure of the recently proposed Tensorflow Distribution library, (Dillon et al, 2017).
Please cite [1] in your work when using this library in your experiments.
To sample the von Mises-Fisher distribution we follow the rejection sampling procedure as outlined by Ulrich, 1984. This simulation pipeline is visualized below:
Note that as is a scalar, this approach does not suffer from the curse of dimensionality. For the final transformation, , a Householder reflection is utilized.
For questions and comments, feel free to contact Nicola De Cao.
MIT
[1] Davidson, T. R., Falorsi, L., De Cao, N., Kipf, T.,
and Tomczak, J. M. (2018). Hyperspherical Variational
Auto-Encoders. arXiv.
BibTeX format:
@article{s-vae18,
title={{Hyperspherical Variational Auto-Encoders}},
author={Davidson, Tim R. and
Falorsi, Luca and
De Cao, Nicola and
Thomas, Kipf and
Tomczak, Jakub M.},
journal={arXiv preprint arXiv:},
year={2018}
}