Selection function

No… The reason why scalars are hard to differentiate using the inhibition method I mentioned above is not because of rounding. Rather, it is because of how neurons and inhibition interact with each other. When Nengo simulates the activity of neurons, it does this in a biologically-realistic way. That is to say, the rate at which a neuron spikes is dependent on the amount of input current being fed into the neuron. I sort of describe the process here.

In Nengo, one can inhibit the activity of a neuron by providing a negative current to the neuron. The negative current will “suppress” any positive current incoming to the neuron and without any net input current into the neuron, the neuron will not spike, and thus, it will not produce any output (i.e., the output is inhibited).

If you look at the Nengo code for an inhibitory connection:

nengo.Connection(inhib[0], ensB.neurons, transform=[[-2]] * ensB.n_neurons)

You will notice that a positive inhibitory signal of anything > 1 will cause negative current to be fed into the neuron, thus inhibiting it. It is for this reason that the selection network will not be able to differentiate between a “1” and “2” or any other positive input of sufficient value to inhibit the neurons.