[Nengo-DL]: Adding a dynamic custom layer between two Ensembles

Yes. That is correct. The synaptic application is a convolution operation and it doesn’t matter if you apply the convolution first, or do the connection weight matrix multiplication first.

Correct!

Yes

Yes. This is expected behaviour. Remember that the purpose of the scale_firing_rates parameter is to increase the firing rates of the neurons in the network. However, in order to keep the overall “energy” (or information) being transmitted by the network the same in both cases, the amplitudes of the spikes are divided by the scale_firing_rates value. From my other post:

The scale_firing_rate parameter is applied directly to the amplitude of the neuron’s spikes. Similarly (on the input side), the scale_firing_rate parameter is applied directly to the neuron’s gains.

Just to clarify your earlier question. I believe you are conflating two different concepts here. Your original thought was that the scale_firing_rates would affect the amplitude by scaling it up. However, the purpose of the scale_firing_rates parameter is to increase (typically) the firing rates of the neurons (by adjusting the neuron gains). The reason the amplitude of the spikes is affected is because we want to keep the overall amount of information being transmitted by the spikes the same (pre and post-scaling). Since we scaled up the firing rate, the thing to do would be to scale down the amplitude, which in effect “cancels” out any additional information gain obtained by increasing the neuron gain.