Hyperbolic embedding implementations of Representation Tradeoffs for Hyperbolic Embeddings.
We use Docker to set up the environment for our code. See Docker/README.md for installation and launch instructions.
In this README, all instructions are assumed to be run inside the Docker container. All paths are relative to the /hyperbolics directory, and all commands are expected to be run from this directory.
The following programs and scripts expect the input graphs to exist in the /data/edges folder, e.g. /data/edges/phylo_tree.edges. All graphs that we report results on have been prepared and saved here.
julia combinatorial/comb.jl --help to see options. Example usage (for better results on this dataset, raise the precision):
julia combinatorial/comb.jl -d data/edges/phylo_tree.edges -m phylo_tree.r10.emb -e 1.0 -p 64 -r 10 -a -s
python pytorch/pytorch_hyperbolic.py learn --help to see options. Example usage:
python pytorch/pytorch_hyperbolic.py learn data/edges/phylo_tree.edges --batch-size 64 -r 10 -l 5.0 --epochs 100 --checkpoint-freq 10 -w phylo_tree.r10.emb
scripts/run_exps.pyruns a full set of experiments for a list of datasets. Example usage (note: the default run settings take a long time to finish):
python scripts/run_exps.py phylo -d phylo_tree --epochs 20
Currently, it executes the following experiments:
- The combinatorial construction with fixed precision in varying dimensions
- The combinatorial construction in dimension 2 (Sarkar's algorithm), with very high precision
- Pytorch optimizer in varying dimensions, random initialization
- Pytorch optimizer in varying dimensions, using the embedding produced by the combinatorial construction as initialization
The combinatorial constructor
combinatorial/comb.jlhas an option for reporting the MAP and distortion statistics. However, this can be slow on larger datasets such as wordnet
scripts/comb_stats.pyprovides an alternate method for computing stats that can leverage multiprocessing Example usage:
python scripts/comb_stats.py phylo_tree -e 1.0 -r 2 -p 1024 -q 4to run on 4 cores