This is a fork of Leabra, to be uploaded for distribution on PyPi. The package is completely unchanged from the original with the exception of the following modifications:
- The name of the package was changed, so that the original authors may use the original name if they decide to upload to PyPi at some point.
- This section was added to the readme.
- Several trivial modifications were made to setup.py for compatibility with PyPi.
- The version number was incremented to account for the above listed changes.
This repository holds a Python implementation of the Leabra (Local, Error-driven and Associative, Biologically Realistic Algorithm) framework. The reference implementation for Leabra is in emergent developped by the Computational Cognitive Neuroscience Laboratory at the University of Colorado Boulder. This Python implementation targets emergent 8.1.0, and only implements the rate-coded mode —which includes some spiking behavior, but is different from the discrete spiking mode (which is not implemented).
This work is the fruit of the collaboration of the Computational Cognitive Neuroscience Laboratory at the University of Colorado Boulder and the Mnemosyne Project-Team at Inria Bordeaux, France.
This is a work in progress. Most of the basic algorithms of Leabra are implemented, but some mechanisms are still missing. While the current implementation passes several quantitative tests of equivalence with the emergent implementation (8.1.1, r11060), the number and diversity of tests is too low to guarantee that the implementation is correct yet.
- Unit, Layer, Connection, Network class
- XCAL learning rule
- Basic notebook examples
- Quantitative equivalence with emergent
- Neuron tutorial notebook
- Inhibition tutorial notebook
- Weight balance mechanism
Install dependencies:
pip install -r requirements.txt
Then, launch Jupyter to see usage examples:
jupyter notebook index.ipynb
Notebooks can be run online without installation with the Binder service. The service is still experimental, and may be down or unstable.
To be decided.