spikingjelly.timing_based package
Subpackages
Submodules
spikingjelly.timing_based.encoding module
- class spikingjelly.timing_based.encoding.GaussianTuning(n, m, x_min: Tensor, x_max: Tensor)[源代码]
基类:
object
- 参数:
n – 特征的数量,int
m – 编码一个特征所使用的神经元数量,int
x_min – n个特征的最小值,shape=[n]的tensor
x_max – n个特征的最大值,shape=[n]的tensor
Bohte S M, Kok J N, La Poutre J A, et al. Error-backpropagation in temporally encoded networks of spiking neurons[J]. Neurocomputing, 2002, 48(1): 17-37. 中提出的高斯调谐曲线编码方式
编码器所使用的变量所在的device与x_min.device一致
spikingjelly.timing_based.neuron module
- class spikingjelly.timing_based.neuron.Tempotron(in_features, out_features, T, tau=15.0, tau_s=3.75, v_threshold=1.0)[源代码]
基类:
Module
- 参数:
in_features – 输入数量,含义与nn.Linear的in_features参数相同
out_features – 输出数量,含义与nn.Linear的out_features参数相同
T – 仿真周期
tau – LIF神经元的积分时间常数
tau_s – 突触上的电流的衰减时间常数
v_threshold – 阈值电压
Gutig R, Sompolinsky H. The tempotron: a neuron that learns spike timing–based decisions[J]. Nature Neuroscience, 2006, 9(3): 420-428. 中提出的Tempotron模型
- static psp_kernel(t: Tensor, tau, tau_s)[源代码]
- 参数:
t – 表示时刻的tensor
tau – LIF神经元的积分时间常数
tau_s – 突触上的电流的衰减时间常数
- 返回:
t时刻突触后的LIF神经元的电压值
- static mse_loss(v_max, v_threshold, label, num_classes)[源代码]
- 参数:
v_max – Tempotron神经元在仿真周期内输出的最大电压值,与forward函数在ret_type == ‘v_max’时的返回值相 同。shape=[batch_size, out_features]的tensor
v_threshold – Tempotron的阈值电压,float或shape=[batch_size, out_features]的tensor
label – 样本的真实标签,shape=[batch_size]的tensor
num_classes – 样本的类别总数,int
- 返回:
分类错误的神经元的电压,与阈值电压之差的均方误差
- forward(in_spikes: Tensor, ret_type)[源代码]
- 参数:
in_spikes – shape=[batch_size, in_features]
in_spikes[:, i]表示第i个输入脉冲的脉冲发放时刻,介于0到T之间,T是仿真时长
in_spikes[:, i] < 0则表示无脉冲发放 :param ret_type: 返回值的类项,可以为’v’,’v_max’,’spikes’ :return:
ret_type == ‘v’: 返回一个shape=[batch_size, out_features, T]的tensor,表示out_features个Tempotron神经元在仿真时长T 内的电压值
ret_type == ‘v_max’: 返回一个shape=[batch_size, out_features]的tensor,表示out_features个Tempotron神经元在仿真时长T 内的峰值电压
ret_type == ‘spikes’: 返回一个out_spikes,shape=[batch_size, out_features]的tensor,表示out_features个Tempotron神 经元的脉冲发放时刻,out_spikes[:, i]表示第i个输出脉冲的脉冲发放时刻,介于0到T之间,T是仿真时长。out_spikes[:, i] < 0 表示无脉冲发放