norse.torch.functional.lsnn

norse.torch.functional.lsnn#

Long-short term memory module, building on the work by [G. Bellec, D. Salaj, A. Subramoney, R. Legenstein, and W. Maass](IGITUGraz/LSNN-official).

The LSNN dynamics is similar to the lif equations, but it adds an adaptive term \(b\):

\[\begin{split}\begin{align*} \dot{v} &= 1/\tau_{\text{mem}} (v_{\text{leak}} - v + i) \\ \dot{i} &= -1/\tau_{\text{syn}}\; i \\ \dot{b} &= -1/\tau_{b}\; b \end{align*}\end{split}\]

This adaptation is applied in the jump condition when the neuron spikes:

\[z = \Theta(v - v_{\text{th}} + b)\]

Contrast this with the regular LIF jump condition:

\[z = \Theta(v - v_{\text{th}})\]

In practice, this means that the LSNN neurons adapt to fire more or less given the same input. The adaptation is determined by the \(\tau_b\) time constant.

Functions

ada_lif_step(input_tensor, state, ...[, p, dt])

Euler integration step for LIF Neuron with adaptation.

lsnn_feed_forward_step(input_tensor, state)

Euler integration step for LIF Neuron with threshold adaptation.

lsnn_step(input_tensor, state, ...[, p, dt])

Euler integration step for LIF Neuron with threshold adaptation More specifically it implements one integration step of the following ODE

Classes

LSNNFeedForwardState(v, i, b)

Integration state kept for a lsnn module

LSNNParameters([tau_syn_inv, tau_mem_inv, ...])

Parameters of an LSNN neuron

LSNNState(z, v, i, b)

State of an LSNN neuron