This repository contains the code implementation of the experiments presented in the paper Training Energy-Based Normalizing Flow with Score-Matching Objectives.
The project page is available at: https://chen-hao-chao.github.io/ebflow/
- Use the code in ebflow/toy_examples to reproduce the results presented in Sections 5.1 and A5.
- Use the code in ebflow/real_world to reproduce the results presented in Sections 5.2, 5.3, and 5.4.
# assume the current directory is the root of this repository
docker run --rm -it --gpus all --ipc=host -v$(pwd):/app nvcr.io/nvidia/pytorch:20.12-py3
# inside the docker container, run:
cd /app
Setup the conda environment with conda_environment.yml
:
conda env create -f conda_environment.yml
Launch ebflow
conda environment:
source activate
conda activate ebflow
This code implementation is developed based on the following repositories:
- taufikxu/FD-ScoreMatching (at commit 9df0789) is licensed under the MIT License.
- akandykeller/SelfNormalizingFlows (at commit 9feebb3) is licensed under the MIT License.
- yang-song/score_sde_pytorch (at commit cb1f359) is licensed under the Apache-2.0 License.
- ermongroup/sliced_score_matching (at commit 880c047) is licensed under the GPL-3.0 license.
- kamenbliznashki/normalizing_flows (at commit 97a73a0).
- fissoreg/relative-gradient-jacobian (at commit d2e03ca).
If you find this code useful, please consider citing our paper.
@inproceedings{chao2023ebflow,
title={{Training Energy-Based Normalizing Flow with Score-Matching Objectives}},
author={Chen-Hao Chao and Wei-Fang Sun and Yen-Chang Hsu and Zsolt Kira and Chun-Yi Lee},
year={2023},
booktitle={Proceedings of International Conference on Neural Information Processing Systems (NeurIPS)}
}