What is seed in nengo?

Could someone explain the concept behind the seed in Nengo simulation?

I was testing SNN model and when I set seed=0, then I get consistent membrane voltage on the neurons. Otherwise, the membrane voltage changes even with the same weights and bias values for each neurons. Is this because with the random seed, the initial membrane voltages are different?

The seed parameter for Nengo objects sets the pseudorandom number generator seed that is used to generate the gain and bias values for the neurons in a nengo.Ensemble.
In turn, the gain and bias values determine the shape of the tuning curve of the neurons.

I’m not entirely sure how you are seting the “weights and bias” values for your neurons. If you are doing them through a nengo.Connection these are a separate set of weights to the gain and bias weights intrinsic to the neurons themselves. This is probably why you see different results with different values for seed.

Hi xchoo,

For the testing purpose, I set the number of neurons low and manually set the intercept, maximum rates and encoder values manually for each neuron. This gave the same weights and bias for each neuron for every simulation.

Then I noticed that even when each neuron has the same weights and bias for every simulation, the membrane voltage for each neuron were not identical for every simulation when I was probing. (different membrane voltages for each neuron at the time step).

I thought it was because the initial membrane voltage were different and the seed parameter got something to do with this. But from your response, the seed seems to be used in the generation of the gain and bias values rather than the initial state of the neurons. Does that mean if you set the intercepts and max rates yourself, just like what I did, so that you force Nengo to generate the same weights and bias for each neuron every time, the seed parameter does not matter much?

Thank you for your answer btw. I have less coding background and I am trying to learn Nengo. Some questions I ask might sound silly.

Just to clarify, the gains and biases are just one (but not the only one) of the neuron parameters that are randomly generated. I spoke to the Nengo devs, and it seems like in the latest Nengo release, the initial neuron states is another thing (in addition to others, like the neuron encoders, and connection evaluation points, etc.) that is randomly generated, and so would be affected by the random seed.

I did some more testing and I was able to force Nengo to calculate the same weights and biases for each neuron every time even with the random seed. (by setting fixed intercepts, max rates and the encoder values for each neuron when constructing the ensemble. I checked this by probing the weights and the biases for each neuron.). However, the membrane voltage trails were different for every simulation.

Then I forced the initial membrane voltage same by changing the initial state of the LIF model. This made the neurons to behave exactly identical every simulation even with the random seed. So I guess the initial state of the neuron must be also affected by the seed as well just like what you said.

Thanks for the clarification!.