Bobby's fork of VishakhG's NF repo.
Two goals here:
- get it running for the 4 potentials from Rezendez et al. (originally in this repo)
- git it running fro two seemingly simple potentials. (FAILS to train :/ )
We'll use pyenv for managing different versions of python and venv for our python virtual envrionment.
Quick background and useful commands appear at the bottom of this readme.
The setup follows reference: https://www.freecodecamp.org/news/manage-multiple-python-versions-and-virtual-environments-venv-pyenv-pyvenv-a29fb00c296f/
-
Set pyenv envrionment to python 3.9.14 (assuming it is installed using. if not, install it using
pyenv install 3.9.14)pyenv local 3.9.14 -
Initialize virtual envrionment in the .venv folder:
python3 -m venv .venvin .venv/bin should be a copy of python3.9
-
Start virtual envrionment:
source .venv/bin/activateAt this point, you should see you should see (venv) before your terminal, running
which pipandwhich pythonshould produce a path to thepipandpythoninstances in.venv/bin/.Running
python --versionshould produce 3.9.14.VS Code and Jupyter users may need to point them to the right interpreter. (.vinv/bin/python)
-
Install required packages from
./requirements.txtfile:pip install -r requirements.txtNOTE: if a new packages is needed then use the
pip install <package>(which calls.venv/bin/pip) to install it, and -
Before pushing, if new required packages were installed, these need to be added to the repo and pushed. Run
pip freeze > requirements.txtand push the new
requirements.txt.Note that the
.venvfolder is gitignored and should not ship with the repo.
Attempting to implement the potential function experiments from:
Danilo Jimenez Rezende and Shakir Mohamed. Variational inference with normalizing
flows. In Proceedings of the 32nd International Conference on Machine Learning, pages
1530–1538, 2015.
Other reference:
Papamakarios, George, et al. Normalizing Flows for Probabilistic Modeling and Inference. Dec. 2019. arxiv.org, https://arxiv.org/abs/1912.02762v1.
To reproduce plots run exp/run_2d_potential_exp.sh or take a look at src/fit_flows.py.
Target densities, corresponding to the 4 potentials from the paper:
Samples from a 2-D diagonal gaussian passed through 32 learned Planar flows:




