PoissonEncoder#
- class brainpy.encoding.PoissonEncoder(min_val=None, max_val=None, gain=1.0, offset=0.0, first_spk_time=0.0)[source]#
Encode the rate input as the Poisson spike train.
Expected inputs should be between 0 and 1. If not, the input \(x\) will be normalized to \(x_{\text{normalize}}\) within
[0, 1]according to \(x_{\text{normalize}} = \frac{x-\text{min_val}}{\text{max_val} - \text{min_val}}\).Given the input \(x\), the poisson encoder will output spikes whose firing probability is \(x_{\text{normalize}}\).
- Parameters:
min_val (
Optional[float]) – The minimal value in the given data x, used to the data normalization.max_val (
Optional[float]) – The maximum value in the given data x, used to the data normalization.gain (
float) – Scale input features by the gain, defaults to1.offset (
float) – Shift input features by the offset, defaults to0.first_spk_time (
float) – The time to first spike, defaults to0.
Examples
import brainpy as bp import brainpy.math as bm img = bm.random.random((10, 2)) # image to encode (normalized to [0., 1.]) encoder = bp.encoding.PoissonEncoder() # the encoder # encode the image at each time for run_index in range(100): spike = encoder.single_step(img) # do something # or, encode the image at multiple times once spikes = encoder.multi_steps(img, n_time=10.)
- multi_steps(x, n_time)[source]#
Generate spikes at multiple steps according to the inputs.
- Parameters:
x (
Array) – The rate input.Encode rate values as spike trains in the given time length.
n_timeis converted into then_stepaccording to n_step = int(n_time / brainpy.math.dt). - Ifn_time=None, encode the rate values at the current time step.Users should repeatedly call it to encode x as a spike train.
Else, given the
xwith shape(S, ...), the encoded spike train is the array with shape(n_step, S, ...).
- Returns:
out – The encoded spike train.
- Return type:
Array