The Nengo team is psyched to announce the release of Nengo 3.0.0!
What is Nengo?
Nengo is a Python library for building and simulating large-scale neural models for AI and robotics. It can be thought of as a neural compiler, transforming a functional description of a neural model to a network of spiking or non-spiking neurons that can run on multiple backends including GPUs and neuromorphic hardware.
What’s new?
Nengo 3.0.0 is a major release that adds important new features and includes some changes that are not backwards-compatible.
The biggest change is to the transform
argument of nengo.Connection
. Previously, the transform could be a NumPy array or a distribution that would generate a NumPy array. Nengo 3.0 adds the ability to do more complex and useful transforms between two Nengo objects. The newly added nengo.Convolution
transform makes it easy to define convolutional neural networks with the Nengo API. The nengo.Sparse
transform can improve the efficiency of sparse connections between large ensembles or nodes. Under the hood, NumPy arrays and distributions return nengo.Dense
objects, which can also be manually specified.
The other major change that will affect most models is that the default Ensemble.intercepts
value is now uniformly distributed between -1 and 0.9 (changed from -1 to 1) in order to avoid the high gain values that result from intercepts that are close to 1.
If you have implemented a custom nengo.Process
subclass, you will have to update that process to conform to the new interface. There is now a make_state
method that you can override, and the make_step
method accepts a state
dictionary as the last positional argument.
The Nengo documentation has gotten a significant facelift, and now includes a dropdown to view the documentation for some older versions of Nengo. The version 3.0.0 documentation will always be accessible from https://www.nengo.ai/nengo/v3.0.0/. Additionally, many more parts of the API are included in the documentation in case you want to dive deeper into Nengo’s internals.
While making big improvements to our testing infrastructure, we extracted some generally useful pytest fixtures into separate open source projects that other Python developers can use. pytest-plt
makes it easy to generate Matplotlib plots in your tests. pytest-rng
ensures that “randomness” in tests is reproducible from one run to the next. pytest-allclose
extends the numpy.allclose
function to add handy new features and summary statistics for all tests that compare numbers within some tolerance.
Nengo has dropped support for older versions of Python and NumPy. Nengo now requires Python 3.5 or higher, and NumPy 1.13 or higher.
Several parts of the Nengo core have been moved to separate projects. The nengo.spa
implementation of the Semantic Pointer Architecture is now deprecated in favour of the Nengo SPA project. Several infrequently used utilities have been moved to the Nengo extras project. Additionally, the nengo.ipynb
extension that was previous required to render progress bars in Jupyter notebooks has been removed as it is now possible to render progress bars without the extension.
In total, Nengo 3.0.0 contains 9 bugfixes, over 40 new and changed features, and has cleaned up 24 old, unused features. To see the full list of changes, head to the Github release page.
How do I get it?
To get the new version of Nengo, use pip
.
pip install --upgrade nengo
Where can I learn more?
Where can I get help?
You’re already there! If you have an issue upgrading or have any other questions, please post them in this forum.