# 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](https://github.com/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