# norse.torch.functional.lif_ex.lif_ex_feed_forward_step#

norse.torch.functional.lif_ex.lif_ex_feed_forward_step(input_spikes: torch.Tensor, state: norse.torch.functional.lif_ex.LIFExFeedForwardState = LIFExFeedForwardState(v=0, i=0), p: norse.torch.functional.lif_ex.LIFExParameters = LIFExParameters(delta_T=tensor(0.5000), tau_syn_inv=tensor(200.), tau_mem_inv=tensor(100.), v_leak=tensor(0.), v_th=tensor(1.), v_reset=tensor(0.), method='super', alpha=100.0), dt: float = 0.001) Tuple[torch.Tensor, norse.torch.functional.lif_ex.LIFExFeedForwardState][source]#

Computes a single euler-integration step of an exponential LIF neuron-model adapted from https://neuronaldynamics.epfl.ch/online/Ch5.S2.html. It takes as input the input current as generated by an arbitrary torch module or function. More specifically it implements one integration step of the following ODE

\begin{split}\begin{align*} \dot{v} &= 1/\tau_{\text{mem}} \left(v_{\text{leak}} - v + i + \Delta_T exp\left({{v - v_{\text{th}}} \over {\Delta_T}}\right)\right) \\ \dot{i} &= -1/\tau_{\text{syn}} i \end{align*}\end{split}

together with the jump condition

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

and transition equations

\begin{split}\begin{align*} v &= (1-z) v + z v_{\text{reset}} \\ i &= i + i_{\text{in}} \end{align*}\end{split}

where $$i_{\text{in}}$$ is meant to be the result of applying an arbitrary pytorch module (such as a convolution) to input spikes.

Parameters:

input_spikes (torch.Tensor): the input spikes at the current time step state (LIFExFeedForwardState): current state of the LIF neuron p (LIFExParameters): parameters of a leaky integrate and fire neuron dt (float): Integration timestep to use