src.canns.models.brain_inspired.spiking

Simple spiking neuron layer for STDP learning.

Classes

SpikingLayer

Simple Leaky Integrate-and-Fire (LIF) spiking neuron layer.

Module Contents

class src.canns.models.brain_inspired.spiking.SpikingLayer(input_size, output_size, threshold=1.0, v_reset=0.0, leak=0.9, trace_decay=0.95, dt=1.0, **kwargs)[source]

Bases: src.canns.models.brain_inspired._base.BrainInspiredModel

Simple Leaky Integrate-and-Fire (LIF) spiking neuron layer.

This model provides a minimal spiking neuron implementation for demonstrating spike-timing-dependent plasticity (STDP). It features: - Leaky integration of input currents - Threshold-based spike generation - Reset mechanism after spiking - Exponential spike traces for STDP learning

Dynamics:

v[t+1] = leak * v[t] + W @ x[t] spike = 1 if v >= threshold else 0 v = v_reset if spike else v trace = decay * trace + spike

References

  • Gerstner & Kistler (2002): Spiking Neuron Models

  • Morrison et al. (2008): Phenomenological models of synaptic plasticity

Initialize the spiking layer.

Parameters:
  • input_size (int) – Number of input neurons

  • output_size (int) – Number of output neurons

  • threshold (float) – Spike threshold for membrane potential

  • v_reset (float) – Reset potential after spike

  • leak (float) – Membrane leak factor (0-1, closer to 1 = less leaky)

  • trace_decay (float) – Decay factor for spike traces (used in STDP)

  • dt (float) – Time step size

  • **kwargs – Additional arguments passed to parent class

forward(x)[source]

Forward pass through the spiking layer.

Parameters:

x (jax.numpy.ndarray) – Input spikes of shape (input_size,) with binary values (0 or 1)

Returns:

Output spikes of shape (output_size,) with binary values (0 or 1)

Return type:

jax.numpy.ndarray

reset_state()[source]

Reset membrane potentials and spike traces.

update(prev_energy)[source]

Update method for trainer compatibility (no-op for spiking layer).

W[source]
dt = 1.0[source]
property energy: float[source]

Energy for trainer compatibility (0 for spiking layer).

input_size[source]
leak = 0.9[source]
output_size[source]
property predict_state_attr: str[source]

Name of output state for prediction.

spike[source]
threshold = 1.0[source]
trace_decay = 0.95[source]
trace_post[source]
trace_pre[source]
v[source]
v_reset = 0.0[source]
property weight_attr: str[source]

Name of weight parameter for generic training.

x[source]