Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/igitugraz/h-mem
Code for Limbacher, T. and Legenstein, R. (2020). H-Mem: Harnessing synaptic plasticity with Hebbian Memory Networks
https://github.com/igitugraz/h-mem
hebbian-learning memory-networks neural-networks python recurrent-neural-networks tensorflow-experiments
Last synced: 3 months ago
JSON representation
Code for Limbacher, T. and Legenstein, R. (2020). H-Mem: Harnessing synaptic plasticity with Hebbian Memory Networks
- Host: GitHub
- URL: https://github.com/igitugraz/h-mem
- Owner: IGITUGraz
- License: gpl-3.0
- Created: 2020-07-02T13:06:20.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-06-02T16:39:42.000Z (over 2 years ago)
- Last Synced: 2024-09-22T08:02:04.135Z (3 months ago)
- Topics: hebbian-learning, memory-networks, neural-networks, python, recurrent-neural-networks, tensorflow-experiments
- Language: Python
- Homepage:
- Size: 45.9 KB
- Stars: 13
- Watchers: 7
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![PWC](https://img.shields.io/endpoint.svg?url=https://paperswithcode.com/badge/h-mem-harnessing-synaptic-plasticity-with/question-answering-on-babi)](https://paperswithcode.com/sota/question-answering-on-babi?p=h-mem-harnessing-synaptic-plasticity-with)
# H-Mem: Harnessing synaptic plasticity with Hebbian Memory Networks
This is the code used in the paper "[H-Mem: Harnessing synaptic plasticity with Hebbian Memory
Networks](https://www.biorxiv.org/content/10.1101/2020.07.01.180372v2)" for training H-Mem on a single-shot
image association task and on the bAbI question-answering tasks.![H-Mem schema](https://i.imgur.com/fK3UWaP.png)
## Setup
You need [TensorFlow](https://www.tensorflow.org/) to run this code. We tested it on TensorFlow version 2.1.
Additional dependencies are listed in [environment.yml](environment.yml). If you use
[Conda](https://docs.conda.io/en/latest/), run```bash
conda env create --file=environment.yml
```to install the required packages and their dependencies.
## Usage
### Single-shot associations with H-Mem
To start training on the single-shot image association task, run```bash
python image_association_task.py
```Set the command line argument `--delay` to set the between-image delay (in the paper we used delays ranging from 0 to 40). Run the following command
```bash
python image_association_task_lstm.py
```to start training the LSTM model on this task (the default value for the between-image delay is 0; you can change it with the command line argument `--delay`).
### Question answering with H-Mem
Run the following command```bash
python babi_task_single.py
```to start training on bAbI task 1 in the 10k training examples setting. Set the command line argument `--task_id` to train on other tasks. You can try different model configurations by changing various command line arguments. For example,
```bash
python babi_task_single.py --task_id=4 --memory_size=20 --epochs=50 --logging=1
```will train the model with an associative memory of size 20 on task 4 for 50 epochs. The results will be stored in `results/`.
### Memory-dependent memorization
In our extended model we have added an 'read-before-write' step. This model will be used if the
command line argument `--read_before_write` is set to `1`. Run the following command```bash
python babi_task_single.py --task_id=16 --epochs=250 --read_before_write=1
```to start training on bAbI task 16 in the 10k training examples setting (note that we trained the extended
model for 250 epochs---instead of 100 epochs). You should get an accuracy of about 100% on this task. Compare
to the original model, which does not solve task 16, by running the following command```bash
python babi_task_single.py --task_id=16 --epochs=250
```## References
* Limbacher, T., & Legenstein, R. (2020). H-Mem: Harnessing synaptic plasticity with Hebbian Memory Networks. Advances in Neural Information Processing Systems, 33.
https://www.biorxiv.org/content/10.1101/2020.07.01.180372v2