Neural Connectivity and Network Layers

Greetings, I would like to ask two questions.

  1. Does Nengo supports defining the connectivity patterns between neuron groups (choose for example either all neurons of the first group to be connected with all the neurons of the second or the first neuron of the first group with the corresponding neuron of the other etc)?

  2. In other simulators you can create layers of neurons (the default idea we have for a neural network) with an input layer, hidden layers and an output layer. What is the equivalent of that in Nengo? I have seen that in Nengo DL you can add Keras layers but that is different.

Yes, you can specify arbitrary connection weight matrices, like

ens0 = nengo.Ensemble(10, 1)
ens1 = nengo.Ensemble(20, 1)
nengo.Connection(ens0.neurons, ens1.neurons, transform=<your_weight_matrix>)

where your_weight_matrix is a 20x10 matrix specifying the weights between the individual neurons of ens0 and ens1.

You can think of a layer as equivalent to an Ensemble (although an Ensemble is a bit more general). So you could create a simple three layer network like

input = nengo.Node([0, 0, 0])

hidden = nengo.Ensemble(100, 1)
nengo.Connection(input, hidden.neurons, transform=...)

output = nengo.Ensemble(10, 1)
nengo.Connection(hidden.heurons, output.neurons, transform=...)
1 Like

Thank you!