NengoDL is a simulator for Nengo models. That means it takes a Nengo network as input, and allows the user to simulate that network using some underlying computational framework (in this case, TensorFlow).
In practice, what that means is that the code for constructing a Nengo model is exactly the same as it would be for the standard Nengo simulator. All that changes is that we use a different Simulator class to execute the model.
For example:
import nengo
import nengo_dl
import numpy as np
with nengo.Network() as net:
inp = nengo.Node(output=np.sin)
ens = nengo.Ensemble(50, 1, neuron_type=nengo.LIF())
nengo.Connection(inp, ens, synapse=0.1)
p = nengo.Probe(ens)
with nengo_dl.Simulator(net) as sim: # this is the only line that changes
sim.run(1.0)
print(sim.data[p])
However, NengoDL is not simply a duplicate of the Nengo simulator. It also adds a number of unique features, such as:
- optimizing the parameters of a model through deep learning training methods (using the Keras API)
- faster simulation speed, on both CPU and GPU
- automatic conversion from Keras models to Nengo networks
- inserting TensorFlow code (individual functions or whole network architectures) directly into a Nengo model
If you are interested in NengoDL you may also be interested in KerasSpiking, a companion project to NengoDL that has a more minimal feature set but integrates even more transparently with the Keras API. See this page for a more detailed comparison between the two projects.
Documentation
Check out the documentation for