Introduction ============= 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 :class:`.Simulator` class to execute the model. For example: .. code-block:: python 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 - faster simulation speed, on both CPU and GPU - inserting networks defined using TensorFlow (such as convolutional neural networks) directly into a Nengo model