Differentiable plasticity
This repo contains implementations of the algorithms described in Differentiable plasticity: training plastic networks with gradient descent, a research paper from Uber AI Labs.
There are four different experiments included here:
simple
: Binary pattern memorization and completion. Read this one first!images
: Natural image memorization and completionomniglot
: One-shot learning in the Omniglot taskmaze
: Maze exploration task (reinforcement learning)
We strongly recommend studying the simple/simplest.py
program first, as it is deliberately kept as simple as possible while showing full-fledged differentiable plasticity learning.
The code requires Python 3 and PyTorch 0.3.0 or later. The images
code also requires scikit-learn. By default our code requires a GPU, but most programs can be run on CPU by simply uncommenting the relevant lines (for others, remove all occurrences of .cuda()
).
To comment, please open an issue. We will not be accepting pull requests but encourage further study of this research. To learn more, check out our accompanying article on the Uber Engineering Blog.