SpikingFlow.connection package

Submodules

SpikingFlow.connection.transform module

class SpikingFlow.connection.transform.BaseTransformer[源代码]

基类:torch.nn.modules.module.Module

脉冲-电流转换器的基类

输入是脉冲(torch.bool),输出是电流(torch.float)

forward(in_spike)[源代码]
参数

in_spike – 输入脉冲

返回

输出电流

要求子类必须实现这个函数

reset()[源代码]
返回

None

重置所有的状态变量为初始值 对于有状态的子类,必须实现这个函数

training: bool
class SpikingFlow.connection.transform.SpikeCurrent(amplitude=1)[源代码]

基类:SpikingFlow.connection.transform.BaseTransformer

参数

amplitude – 放大系数

输入脉冲,输出与脉冲形状完全相同、离散的、大小为amplitude倍的电流

forward(in_spike)[源代码]
参数

in_spike – 输入脉冲

返回

输出电流

简单地将输入脉冲转换为0/1的浮点数,然后乘以amplitude

training: bool
class SpikingFlow.connection.transform.ExpDecayCurrent(tau, amplitude=1)[源代码]

基类:SpikingFlow.connection.transform.BaseTransformer

参数
  • tau – 衰减的时间常数,越小则衰减越快

  • amplitude – 放大系数

指数衰减的脉冲-电流转换器

若当前时刻到达一个脉冲,则电流变为amplitude

否则电流按时间常数为tau进行指数衰减

forward(in_spike)[源代码]
参数

in_spike – 输入脉冲

返回

输出电流

reset()[源代码]
返回

None

重置所有状态变量为初始值,对于ExpDecayCurrent而言,直接将电流设置为0即可

training: bool
class SpikingFlow.connection.transform.STPTransformer(v_base, tau_f, tau_d)[源代码]

基类:SpikingFlow.connection.transform.BaseTransformer

参数
  • v_base – v的基本值

  • tau_f – 刺激信号衰减的时间常数

  • tau_d – 抑制信号衰减的时间常数

突触的短期可塑性。工作在突触前脉冲的时刻,用于调制突触前脉冲的刺激值,使其不至于产生大量突触后电流。

其动态方程为

\[\begin{split}\begin{split} \frac{\mathrm{d}x}{\mathrm{d}t} &= \frac{1-x}{\tau_d} - v x \delta (t) \\ \frac{\mathrm{d}v}{\mathrm{d}t} &= \frac{V_{base}-v}{\tau_f} + V_{base} (1-v) \delta (t) \end{split}\end{split}\]

输出电流为 \(v x \delta (t)\)

forward(in_spike)[源代码]
参数

in_spike – 输入脉冲

返回

输出电流

reset()[源代码]
返回

None

重置所有状态变量x, v为初始值1.0和v_base

training: bool

Module contents

class SpikingFlow.connection.BaseConnection[源代码]

基类:torch.nn.modules.module.Module

所有突触的基类

突触,输入和输出均为电流,将脉冲转换为电流的转换器定义在connection.transform中

forward(x)[源代码]
参数

x – 输入电流

返回

输出电流

reset()[源代码]
返回

None

将突触内的所有状态变量重置为初始状态

training: bool
class SpikingFlow.connection.ConstantDelay(delay_time=1)[源代码]

基类:SpikingFlow.connection.BaseConnection

参数

delay_time – int,表示延迟时长

具有固定延迟delay_time的突触,t时刻的输入,在t+1+delay_time时刻才能输出

forward(x)[源代码]
参数

x – 输入电流

返回

输出电流

t时刻的输入,在t+1+delay_time时刻才能输出

reset()[源代码]
返回

None

重置状态变量为初始值,对于ConstantDelay,将保存之前时刻输入的队列清空即可

training: bool
class SpikingFlow.connection.Linear(in_num, out_num, device='cpu')[源代码]

基类:SpikingFlow.connection.BaseConnection

参数
  • in_num – 输入数量

  • out_num – 输出数量

  • device – 数据所在设备

线性全连接层,输入是[batch_size, *, in_num],输出是[batch_size, *, out_num]

连接权重矩阵为 \(W\),输入为 \(x\),输出为 \(y\),则

\[y = xW^T\]
forward(x)[源代码]
参数

x – 输入电流,shape=[batch_size, *, in_num]

返回

输出电流,shape=[batch_size, *, out_num]

training: bool
class SpikingFlow.connection.GaussianLinear(in_num, out_num, std, device='cpu')[源代码]

基类:SpikingFlow.connection.BaseConnection

参数
  • in_num – 输入数量

  • out_num – 输出数量

  • std – 噪声的标准差

  • device – 数据所在设备

带高斯噪声的线性全连接层,噪声是施加在输出端的,所以可以对不同的神经元产生不同的随机噪声。 维度上,输入是[batch_size, *, in_num],输出是[batch_size, *, out_num]。

连接权重矩阵为 \(W\),输入为 \(x\),输出为 \(y\),标准差为std的噪声为 \(e\), 则

\[y = xW^T + e\]
forward(x)[源代码]
training: bool