Hyperbolic Neural Networks
October 9, 2020 ยท View on GitHub
Python source code
We recommend reading our blog for an introduction to hyperbolic neural networks. Other related material can be accessed here.
- Prerequisites:
python3.5, Tensorflow 1.8, numpy, pickle, logging
- Generate the 3d MLR figure from our paper.
python3.5 viz_mlr.py
- Run the code to reproduce results from Table 1. Example of command that runs hyperbolic GRUs + one hyperbolic fully connected layer + hyperbolic MLR to embed each pair of sentences from the PREFIX10 dataset (assuming the location of this dataset is in the same directory as the source code):
CUDA_VISIBLE_DEVICES='' python3.5 hyp_rnn.py --base_name='' --dataset='PRFX10' --inputs_geom='hyp' --word_dim=5 --word_init_avg_norm=0.001 --cell_type='gru' --cell_non_lin='id' --sent_geom='hyp' --bias_geom='hyp' --ffnn_geom='hyp' --ffnn_non_lin='id' --additional_features='dsq' --dropout=1.0 --before_mlr_dim=5 --mlr_geom='hyp' --reg_beta=0.0 --hyp_opt='rsgd' --lr_ffnn=0.01 --lr_words=0.1 --burnin='n' --proj_eps=1e-5 --batch_size=64 --root_path=./
The data needed in this code lives in the *_dataset folders and was generated as follows:
-
SNLI data was put in a binary format using the file
binarize_snli_dataset.pyand the original SNLI dataset -
the PREFIX dataset was generated using the file
prefix_dataset.py
References
If you find this code useful for your research, please cite the following paper in your publication:
@inproceedings{ganea2018hyperbolic,
title={Hyperbolic neural networks},
author={Ganea, Octavian and B{\'e}cigneul, Gary and Hofmann, Thomas},
booktitle={Advances in neural information processing systems},
pages={5345--5355},
year={2018}
}