hxtorch.spiking.functional.lif

Leaky-integrate and fire neurons

Classes

CUBALIFParams(tau_mem, tau_syn, …)

Parameters for CUBA LIF integration and backward path

CalibratedCUBALIFParams(leak, reset, …)

Parameters for CUBA LIF integration and backward path

CalibratedParams(leak, reset, threshold, …)

Parameters for any (of currently available) forward and backward path.

NamedTuple(typename[, fields])

Typed version of namedtuple.

Unterjubel(*args, **kwargs)

Unterjubel hardware observables to allow correct gradient flow

Functions

hxtorch.spiking.functional.lif.cuba_lif_integration(input: torch.Tensor, params: Union[hxtorch.spiking.functional.lif.CalibratedCUBALIFParams, hxtorch.spiking.functional.lif.CUBALIFParams], hw_data: Optional[torch.Tensor] = None, dt: float = 1e-06)Tuple[torch.Tensor, ]

Leaky-integrate and fire neuron integration for realization of simple spiking neurons with exponential synapses. Integrates according to:

i^{t+1} = i^t * (1 - dt / au_{syn}) + x^t v^{t+1} = dt / au_{men} * (v_l - v^t + i^t) + v^t z^{t+1} = 1 if v^{t+1} > params.threshold v^{t+1} = params.reset if z^{t+1} == 1

Assumes i^0, v^0 = 0, v_leak :note: One dt synaptic delay between input and output

TODO: Issue 3992

Parameters
  • input – Input spikes in shape (batch, time, neurons).

  • params – LIFParams object holding neuron parameters.

  • dt – Step width of integration.

Returns

Returns the spike trains in shape and membrane trace as a tuple. Both tensors are of shape (batch, time, neurons).

hxtorch.spiking.functional.lif.cuba_lif_step(z: torch.Tensor, v: torch.Tensor, i: torch.Tensor, input: torch.Tensor, z_hw: torch.Tensor, v_hw: torch.Tensor, params: Union[hxtorch.spiking.functional.lif.CalibratedCUBALIFParams, hxtorch.spiking.functional.lif.CUBALIFParams], dt: float = 1e-06)Tuple[torch.Tensor, ]

Integrate the membrane of a neurons one time step further according to the Leaky-integrate and fire dynamics.

Parameters
  • z – The spike tensor at time step t.

  • v – The membrane tensor at time step t.

  • i – The current tensor at time step t.

  • input – The input tensor at time step t (graded spikes).

  • z_hw – The hardware spikes corresponding to the current time step. In case this is None, no HW spikes will be injected.

  • v_hw – The hardware cadc traces corresponding to the current time step. In case this is None, no HW cadc values will be injected.

  • params – Parameter object holding the LIF parameters.

Returns

Returns a tuple (z, v, i) holding the tensors of time step t + 1.

hxtorch.spiking.functional.lif.cuba_refractory_lif_integration(input: torch.Tensor, params: Union[hxtorch.spiking.functional.lif.CalibratedCUBALIFParams, hxtorch.spiking.functional.lif.CUBALIFParams], hw_data: Optional[torch.Tensor] = None, dt: float = 1e-06)Tuple[torch.Tensor, ]

Leaky-integrate and fire neuron integration for realization of simple spiking neurons with exponential synapses and refractory period.

Integrates according to:

i^{t+1} = i^t * (1 - dt / au_{syn}) + x^t v^{t+1} = dt / au_{men} * (v_l - v^t + i^{t+1}) + v^t z^{t+1} = 1 if v^{t+1} > params.v_th v^{t+1} = params.v_reset if z^{t+1} == 1 or ref^{t+1} > 0 ref^{t+1} = params.tau_ref ref^{t+1} -= 1

Assumes i^0, v^0 = 0.

Parameters
  • input – Input spikes in shape (batch, time, neurons).

  • params – LIFParams object holding neuron parameters.

Returns

Returns the spike trains in shape and membrane trace as a tuple. Both tensors are of shape (batch, time, neurons).

hxtorch.spiking.functional.lif.refractory_update(z: torch.Tensor, v: torch.Tensor, z_hw: torch.Tensor, v_hw: torch.Tensor, ref_state: torch.Tensor, params: NamedTuple, dt: float = 1e-06)Tuple[torch.Tensor, ]

Update neuron membrane and spikes to account for refractory period. This implemention is widly adopted from: https://github.com/norse/norse/blob/main/norse/torch/functional/lif_refrac.py :param z: The spike tensor at time step t. :param v: The membrane tensor at time step t. :param ref_state: The refractory state holding the number of time steps the

neurons has to remain in the refractory period.

Parameters
  • z_hw – The hardware spikes corresponding to the current time step. In case this is None, no HW spikes will be injected.

  • v_hw – The hardware cadc traces corresponding to the current time step. In case this is None, no HW cadc values will be injected.

  • params – Parameter object holding the LIF parameters.

Returns

Returns a tuple (z, v, ref_state) holding the tensors of time step t.

hxtorch.spiking.functional.lif.spiking_threshold(input: torch.Tensor, method: str, alpha: float)torch.Tensor

Selection of the used threshold function. :param input: Input tensor to threshold function. :param method: The string indicator of the the threshold function.

Currently supported: ‘super_spike’.

Parameters

alpha – Parameter controlling the slope of the surrogate derivative in case of ‘superspike’.

Returns

Returns the tensor of the threshold function.