SNN 输入编码过程理解

SNN 输入编码解析

以Bindset中的examples/eth_mnist.py为例

SNN的输入是时间脉冲,如何把mnist图片数据转换为脉冲序列呢?

首先mnist数据中,每张图片的像素为28×28,实际表示为28×28的矩阵,矩阵中每个元素是0-255之间的整数。

SNN需要输入一个脉冲序列,大体的输入格式是 长度为采样次数,每个元素为0/1,代表激活与否。

其中一种常见的序列编码为泊松编码

泊松分布

描述具有固定频率的事件,在某段时间内发生的概率。

那每个像素的灰度值,代表了颜色的深浅程度。灰度值越大,该像素与背景色之间的差距越大。

换个角度理解,灰度值越大,我们眼睛越容易注意到这个像素,也就越容易激活神经元。

用灰度值/255来比作看到这个像素,然后被神经元注意到的概率。

这样的话我们就有了一个固定的频率,接下来根据泊松分布,即可得到在指定的时间段内,脉冲产生的概率分布,根据这个分布产生脉冲序列即可。

具体代码和注释如下:

def poisson(
    datum: torch.Tensor, time: int, dt: float = 1.0, device="cpu", **kwargs
) -> torch.Tensor:
    
  • 7
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值