Hello @xchoo, I have few questions below:
1> In a nengo.Connection()
, what is the relative ordering of synapse
, function
, and transform
? I know that function
is applied before the transform
, so is it synapse
→ function
→ transform
, and in absence of function
, is it synapse
→ transform
? i.e. incoming spikes (if the pre_obj
is an Ensemble) are synapsed/filtered first and then a Linear Transform is applied or is it just the opposite?
2> The default spike amplitude is 1/dt
(due to the amplitude
default set to 1). When I probe the Ensemble neurons of type nengo.LIF()
or nengo.SpikingRectifiedLinear()
or nengo_loihi.neurons.LoihiSpikingRectifiedLinear()
(with default values of amplitude
and dt
), I see the spikes of amplitude 1000.0
(2000.0
when amplitude
is set to 2). In NengoDL, the spikes are calculated as sim.data[neurons_probe] x scale_firing_rates x dt
, which based on above (assuming amplitude=1
, scale_firing_rate=100
, dt=0.001
) would evaluate to 1000.0 x 100 x 0.001 = 100
, but based on my experience with NengoDL, for a scale_firing_rate
of 100 (or 250), I see the spikes (calculated by the same previous formula) as 10 (or 4). Why is it not equal to 100 (or 250) (as should be obtained by the formula)? It seems like we should rather divide the amplitude with scale_firing_rates
(as mentioned in your excellent description here). For some reason, I am messing things up. Please clarify? What computations do the spikes of amplitude 1/dt
go through after being generated from the previous ensemble neurons in NengoDL?
3> This might sound trivial, but just confirming: SpikingRectifiedLinear()
and LoihiSpikingRectifiedLinear()
neurons are examples of “Integrate and Fire” neurons… right?