I’m confused about the setting of neuron encoder and bias.

I’ve go throught some examples, neuron encoder is explicitely set as something like this:

encoders = [[1], [-1]]

I know this can make neurons response to positive input or negative input.

In some cases, if encoder is not set, I looked at the source code, encoder will be UniformHypersphere by default.

In nengo dl tutorial(https://www.nengo.ai/nengo-dl/examples/from-nengo.html), it says encoder can also be optimized. But I can’t find how nengo dl optimize the encoder.

In addition, A Technical Overview of the Neural Engineering Framework says decoder can be obtained by least-squares minimization, however encoder is randomly determined in this case.

I also noticed there is a tutorial “Improving function approximation by adjusting tuning curves”. But this seems like getting a better tuning curve by observation.

So my questions are:

- what does UniformHypersphere mean? It seems like encoders value are uniformly distributed.
- I’d like to encode time-varing input as spike trains, I hope output spike trains can reflect input accurately.

How do I determine optimal encoder and bias? input distrubution and statistics are already known, is there any way to get optimal encoder/bias analytically or by some optimization methods? - Is it possible to get encoder by least square optimization if I can fix all decoder value to 1? Since I need the spike train for future processing, I don’t care about the decoder value. My objective is to find encoder/bias that can make the spike trains as distinguishable as possible if provide different input.