GithubHelp home page GithubHelp logo

lrjconan / rbp Goto Github PK

View Code? Open in Web Editor NEW
39.0 3.0 4.0 4.86 MB

Recurrent Back Propagation, Back Propagation Through Optimization, ICML 2018

Home Page: https://arxiv.org/abs/1803.06396

License: MIT License

Python 89.61% Cuda 4.48% C 5.82% Shell 0.09%
rbp icml-2018 optimization pytorch

rbp's Introduction

RBP

This is the PyTorch implementation of Recurrent Back Propagation as described in the following ICML 2018 paper:

@article{liao2018reviving,
  title={Reviving and Improving Recurrent Back-Propagation},
  author={Liao, Renjie and Xiong, Yuwen and Fetaya, Ethan and Zhang, Lisa and Yoon, KiJung and Pitkow, Xaq and Urtasun, Raquel and Zemel, Richard},
  journal={arXiv preprint arXiv:1803.06396},
  year={2018}
}

Setup

To set up experiments, we need to build our customized operators by running the following scripts:

./setup.sh

Dependencies

Python 3, PyTorch(0.4.0)

Run Demos

  • To run experiments X where X is one of {hopfield, cora, pubmed, hypergrad}:

    python run_exp.py -c config/X.yaml

Notes:

  • Most hyperparameters in the configuration yaml file are self-explanatory.
  • To switch between BPTT, TBPTT and RBP variants, you need to specify grad_method in the config file.
  • Conjugate gradient based RBP requires support of forward mode auto-differentiation which we only provided for the experiments of Hopfield networks and graph neural networks (GNNs). You can check the comments in model/rbp.py for more details.

Cite

Please cite our paper if you use this code in your research work.

Questions/Bugs

Please submit a Github issue or contact [email protected] if you have any questions or find any bugs.

rbp's People

Contributors

lrjconan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

rbp's Issues

Run with updated packages

pyenv install 3.6.0
pyenv shell 3.6.0
python3.6 -m venv ~/.virtualenvs/rbp
source ~/.virtualenvs/rbp/bin/activate
wget https://download.pytorch.org/whl/torch-0.4.0-cp36-cp36m-linux_x86_64.whl
# Select matching torchvision from https://pypi.org/project/torchvision/
wget https://download.pytorch.org/whl/torchvision-0.4.0+cpu-cp36-cp36m-manylinux1_x86_64.whl
pip install torch-0.4.0-cp36-cp36m-linux_x86_64.whl
pip install torchvision-0.4.0+cpu-cp36-cp36m-manylinux1_x86_64.whl
pip install numpy matplotlib cffi sklearn pyaml easydict
bash setup.sh
python run_exp.py -c config/hopfield.yaml

Gives

Traceback (most recent call last):
  File "run_exp.py", line 47, in <module>
    main()
  File "run_exp.py", line 15, in main
    config = get_config(args.config_file)
  File "/home/tsbertalan/Dropbox/Projects/RBP/utils/arg_helper.py", line 38, in get_config
    config = edict(yaml.load(open(config_file, "r")))
TypeError: load() missing 1 required positional argument: 'Loader'

Installing instead the oldest pyaml I can with my pip in this env (pyaml==12.12.5) gives the same.

(rbp) tsbertalan@pico:~/Dropbox/Projects/RBP$ pip freeze
cffi==1.15.0
cycler==0.11.0
easydict==1.9
joblib==1.1.0
kiwisolver==1.3.1
matplotlib==3.3.4
numpy==1.19.5
Pillow==8.4.0
pyaml==12.12.5
pycparser==2.21
pyparsing==3.0.7
python-dateutil==2.8.2
PyYAML==6.0
scikit-learn==0.24.2
scipy==1.5.4
six==1.16.0
sklearn==0.0
threadpoolctl==3.1.0
torch==0.4.0
torchvision==0.2.2
tqdm==4.19.9
You are using pip version 9.0.1, however version 22.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

I know this code is somewhat old and probably a better approach is just to use it as a guide for a newer implementation, but would it be possible to at least provide a requirements.txt so I wouldn't waste time searching for and downloading incorrect old wheels? If not, I can update the pyaml usages later.

t-SNE visualization of hidden state trajectories

Hello @lrjconan! I just read your remarkable paper and loved the hidden state trajectory plot you included in the publication. Do you have any code available on how to make such a plot to allow to compare any other learning method to it? Or is this straight-forward to do as in t-SNE-ing all trajectories together, then plotting them as colored lines?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.