![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
脉冲神经网络
华天雪 L.W
这个作者很懒,什么都没留下…
展开
-
脉冲神经网络的开发公司AI-CTX
瑞士类脑芯片公司aiCTX宣布开源脉冲神经网络(SNN) 仿真平台SINABS(开源地址:https://gitlab.com/aiCTX/sinabs)。有两个特点:1.这个公司更加出来的性能看起来更好2.平均脉冲发放率100Hz这个数据是比较真实的...原创 2021-07-14 09:14:43 · 252 阅读 · 0 评论 -
2021-07-12 原来我用的是CPU,更改方法
def load(f, map_location=torch.device('cpu'), pickle_module=pickle, **pickle_load_args):serialization.py文件更改一下load的方式原创 2021-07-12 09:58:08 · 176 阅读 · 0 评论 -
spikingjelly里面的元组处理方式
在spikingjelly中,self.output_statistics是一个字典,字典打印出来是这个样子:Key:inputKey:{'shape': (100, 3, 32, 32), 'min': 0.0, 'max': 1.0, '99.9': 1.0}Key:128Key:({'shape': (100, 3, 32, 32), 'min': -2.4290657, 'max': 2.7537065, '99.9': 2.753706455230713},)Key:198原创 2021-07-12 09:10:02 · 158 阅读 · 1 评论 -
2021-07-07IF神经元模型
I(t)=CmdVm/dtI(t)=C_mdV_m/dtI(t)=CmdVm/dtdv/dt=RmI(t)dv/dt=R_mI(t)dv/dt=RmI(t)原创 2021-07-08 14:08:23 · 567 阅读 · 0 评论 -
脉冲神经网络基础知识,SpikeProp
题外话,ANN2SNN之如何处理ANN中的负值。如无特殊说明,截图中,白色底引用自硕士论文,绿色底引用自原始论文Error-backpropagation in temporally encoded networks of spiking neurons 2002看硕士论文的一个好处就是不用自己一个个翻译原始英文论文了。使用ReLU激活函数,这样,可以避免负值。因为ReLU激活函数本身就是一个非负的,曲线如下图所示:从各个文献中得到的知识都是支离破碎的,要经过自己的整理和领会。有监督学习算法原创 2021-07-02 10:11:10 · 662 阅读 · 0 评论 -
Theory and tools for the conversion of analog to spiking convolutional neural networks
ANN2SNN的转化摘要深度卷积神经网络已经展现了巨大的潜力对于真实世界,但是CNN在实时处理方面依然存在挑战。我们之前已经证明了传统的CNN可以转化为SNN,SNN表现出了相近的争取率,但是推理延迟和计算代价却大大减少了,主要是因为SNN的事件驱动的计算方式。这里我们提供了一个新的理论解释为什么这个转换是成功的,并且从中衍生出新的工具,使得能够将更大规模,更强大的DNN转换为SNN。我们确定了在以前的转换方法中近似误差的主要来源,并提出了简单的机制来解决这些问题。此外,我们开发了常见CNN操作(如ma原创 2021-06-25 13:06:09 · 391 阅读 · 0 评论 -
SpykeTorch: Efficient Simulation of Convolutional Spiking Neural Networks With at Most One Spike per
引言下面我们介绍一下Spyketorch,这个是基于pytorch的框架的。在相同的学习规则下,可以使用STDP和R-STDP,其他的法则也能够应用。该框架中的计算是基于张量的,完全由PyTorch函数完成,这反过来带来了在cpu、gpu或多gpu平台上运行的实时优化能力。1介绍多年来,科学家一直试图将类人视觉引入机器和人工智能(AI)中。近年来,基于深度卷积神经网络(DCNNs)的先进技术(Rawat and Wang, 2017;Gu等人,2018),人工视觉从未更接近人类视觉。尽管dcnn在许多原创 2021-06-22 20:47:16 · 648 阅读 · 3 评论 -
2021-06-18激活函数的意义
如果不用激活函数,每一层的输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。这就是原始的感知机。激活函数的存在,使得神经网络可以任意逼近任何非线性函数,这样就能应用到众多的非线性模型中了。...原创 2021-06-18 11:20:27 · 90 阅读 · 0 评论 -
Conversion of Continuous-Valued Deep Networks to Efficient Event-Driven Networks for Image
2.2 脉冲转换 ANN 操作2.2.1 转换偏置偏置在ANN中是标准的,但是在转换前的SNN是需要去掉的。2.2.2 参数归一化一个复杂问题的根源在于SNN的模拟时间步,神经元的放电速率被限制在[0,rmax][0,r_{max}][0,rmax],然而,在典型的ANN中是没有这个限制的。权重正则化是一种手段,去防止类似的错误:太低或者太高的放电率。2.2.2.1 偏置的正则化假设最大的激活值是ReLU在第lll层是λl\lambda^lλl,那么权重和偏置应该按照如下的规则进行正则化:W原创 2021-06-07 21:25:18 · 231 阅读 · 0 评论 -
ann2snn的代码分析
首先,主函数是if_cnn_mnist_work.py1.输出snn测试结果的就是这么一些代码: utils.pytorch_ann2snn(model_name=model_name, norm_tensor=norm_tensor, test_data_loader=test_data_loader, device=原创 2021-06-01 11:14:48 · 818 阅读 · 4 评论 -
ANN中批归一化的意义和在SNN中的转化
是一个深度神经网络训练的技巧,它不仅可以加快了模型的收敛速度,而且更重要的是在一定程度缓解了深层网络中“梯度弥散”的问题,从而使得训练深层网络模型更加容易和稳定。所以目前BN已经成为几乎所有卷积神经网络的标配技巧了。在BN出现之前,对一批数据{x1,x2……,xn}\{x_1,x_2……,x_n\}{x1,x2……,xn},求均值和方差做归一化。1.求每一个训练批次数据的均值μ\muμ2.求每一个训练批次数据的方差σ\sigmaσ3.使用求得的均值和方差对该批次的训练数据做归一化,获得0-1原创 2021-06-01 09:35:50 · 547 阅读 · 0 评论 -
ann2snn的理论基础
import torchfrom spikingjelly.clock_driven import neuronfrom spikingjelly import visualizingfrom matplotlib import pyplot as pltimport numpy as npplt.rcParams['figure.dpi'] = 200if_node = neuron.IFNode(v_reset=None, monitor_state=True)T = 128x = to原创 2021-05-31 16:03:38 · 801 阅读 · 0 评论 -
-10dB
G:\python\python.exe "F:/my_code/spikingjelly-master-20201221/spikingjelly/clock_driven/ann2snn/examples/if_cnn_mnist_work - 副本.py"All the temp files are saved to ./log-cnn_mnist1622383630.8332608ann2snn config: {'simulation': {'reset_to_zero': False,原创 2021-05-30 22:32:41 · 457 阅读 · 0 评论 -
-6dB的效果也不错
G:\python\python.exe "F:/my_code/spikingjelly-master-20201221/spikingjelly/clock_driven/ann2snn/examples/if_cnn_mnist_work - 副本.py"All the temp files are saved to ./log-cnn_mnist1622381673.6093786ann2snn config: {'simulation': {'reset_to_zero': False,原创 2021-05-30 21:59:45 · 201 阅读 · 0 评论 -
-3dB下的正确率是100%!!!
太难以置信了2021年5月30日21:33:09跑的ann2snn的程序,结果居然是100%G:\python\python.exe "F:/my_code/spikingjelly-master-20201221/spikingjelly/clock_driven/ann2snn/examples/if_cnn_mnist_work - 副本.py"All the temp files are saved to ./log-cnn_mnist1622380146.61931ann2snn con原创 2021-05-30 21:33:54 · 365 阅读 · 0 评论 -
spikingjelly的20201221版本跑通ANN2SNN
使用自己的数据集最大的一个问题在于,源代码使用的是MNIST数据集,而我使用的是自己构建的图片集。主要区别在以下几点:1.源代码数据加载使用的方法为: # train_data_dataset = torchvision.datasets.MNIST( # root=dataset_dir, # train=True, # transform=torchvision.transforms.ToTensor(), # downloa原创 2021-05-29 08:17:36 · 1011 阅读 · 0 评论 -
spikingjelly中的ANN2SNN程序20201221是好使的
spikingjelly的最新版本,我当时使用的是20210330,中间存在onnx的包调用错误,难以解决。通过调试20201221,发现这个版本的是好使的,但是也有一些是需要调试的。1.首先应该训练出一个ANN模型出来,此时main函数中应该不填入任何信息,即if __name__ == '__main__': main() # main('./log-cnn_mnist1622169436.7251258')2.当训练出ANN模型后,会自动生成一个文件夹如./log-cnn原创 2021-05-28 11:03:52 · 737 阅读 · 0 评论 -
spikingjelly的ANN2SNN
首先,要进行ANN的训练,训练出来的一个文件模型是pkl格式的模型。然后试图将这个ANN模型转换为SNN这个ANN的模型的网络结构:三层卷积块串联一个全连接层,每个卷积块由一个卷积层、一个批正则化、一个ReLU激活和一个平均池化层组成代码如下:self.network = nn.Sequential( nn.Conv2d(1, 32, 3, 1), nn.BatchNorm2d(32, eps=1e-3), nn.ReLU(),原创 2021-05-28 09:18:59 · 947 阅读 · 0 评论 -
ENABLING SPIKE-BASED BACKPROPAGATION FOR TRAINING DEEP NEURAL NETWORK ARCHITECTURES
能够基于脉冲的反向传播的训练深层神经网络然鹅,ANN-SNN转换框架不能够获取时域动态特征。另一方面,由于信号的不连续性,以及脉冲函数的不可微分性质,利用输入脉冲事件直接训练深度snn仍然是一个困难的问题。...原创 2021-03-23 11:18:07 · 207 阅读 · 0 评论 -
spiking卷积到底是个啥?
计算编码窗口内输出神经元的膜电压,将输出神经元的脉冲发放时间作为spiking卷积操作spiking卷积操作,不是对spiking神经元脉冲发放时间的简单加权操作,而是通过模拟神经元工作方式,进行膜电压的计算,Spiking卷积返回的结果是突触后神经元的点火时间。...原创 2021-03-22 10:54:39 · 481 阅读 · 1 评论 -
深度残差网络
LIF神经元的平均发放速率:原创 2021-03-22 09:22:35 · 66 阅读 · 0 评论 -
神经元模型的离散化
之前读了一篇文献,是关于LIF模型从微分方程转化为精确迭代的模型。今天阅读 赵百新 的论文,使用STCA的离散化方法。STCA Spatio-Temporal Credit Assignment with Delayed Feedback in Deep原创 2021-03-18 15:09:45 · 431 阅读 · 0 评论 -
SNN功耗
引用:易全政 2019引用:杜进,2019原创 2021-03-17 14:52:23 · 431 阅读 · 1 评论 -
基于spiking卷积的脉冲时间编码
引用:高国明 2017原创 2021-03-17 13:59:20 · 377 阅读 · 1 评论 -
硬件平台功耗
引用:薛天志 2019 中国科技大学原创 2021-03-17 13:54:03 · 115 阅读 · 1 评论 -
snn和ann消耗能量对比
关键的问题,在于这个“平均脉冲发放频率”这个数字怎么来的,以及相同结构的DNN又是如何估算功率的?引用:麦应潮 2020原创 2021-03-17 13:45:32 · 819 阅读 · 2 评论 -
nn.Conv2d的解释
nn.Conv2d(self, in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True))参数: in_channel: 输入数据的通道数,例RGB图片通道数为3; out_channel: 输出数据的通道数,这个根据模型调整; kennel_size: 卷积核大小,可以是int,或tuple;kennel_size=2,意味着卷积大小(2,2), kennel_s转载 2021-03-04 19:29:01 · 619 阅读 · 1 评论 -
脉冲神经元的膜电位释放方式,分为hard和soft两种
释放脉冲消耗了神经元之前积累的电荷,因此膜电位会有一个瞬间的降低,即膜电位的重置。在SNN中,对膜电位重置的实现,有2种方式:1.Hard方式:释放脉冲后,膜电位直接被设置成重置电压:V=VresetV=V_{reset}V=Vreset2.soft方式:释放脉冲后,膜电位减去阈值电压V=V−VthresholdV=V-V_{threshold}V=V−Vthreshold也就是在软性方式中,说假设电压为5,阈值电压为4,那么将会降低至5-4=1,并不存在所谓的重置电压。...转载 2021-03-04 14:51:55 · 494 阅读 · 1 评论 -
conversion of continuous-Valued Deep Networks to efficient Event-driven Networks for image classific
连续值深度网络到有效事件驱动网络的图像分类转换有直接训练的,也有ann转snn的,也有直接训练的Spiking deep convolutional neural networks for energy-efficient object recognitionCao, Y作者Yongqiang Cao原创 2020-12-30 09:40:50 · 303 阅读 · 0 评论 -
LIF模型及其变种 Training Spiking Deep Networks for Neuromorphic Hardware
标准LIF和软化LIF我们要计算原始网络的计算效率图像中有两个主要的计算来源:计算神经元和计算连接。每秒浮点计算(floating-point operations per second)突触的计算需要消耗大部分的能量这些方法为将传统的人工神经网络翻译为基于尖峰的神经形态硬件提供了新途径。我们提供了一些证据,表明这种实现比ANN的实现更节能。虽然我们的分析只考虑了静态图像分类,但我们期望在处理动态输入(例如视频)时,SNN的实际效率将变得明显。这是因为SNN本质上是动态的,并且需要采取许多模拟步骤原创 2020-12-30 09:05:37 · 751 阅读 · 0 评论 -
关于Training deep neural networks for binary communication with the Whetstone method的代码实现
GitHub网址如下:https://github.com/SNL-NERL/Whetstone/blob/master/examples/adaptive_mnist.py实现过程中解决的问题:1.Ubuntu下,python+TensorFlow+Keras版本问题经检验,配置版本为python3.8.5+TensorFlow2.2.0+Keras2.3.1可行2.关于磨刀石算法包的加载直接pip install whetstone 即可3.运行程序时,会报错显示“模块whetstone不原创 2020-12-30 07:50:44 · 224 阅读 · 2 评论 -
脉冲神经网络综述
其中无监督学习主要包括基于 1.2 节中 Hebb 与 STDP 两种突触可塑性规则的仿生学习算法,有监督学习则可以进一步划分为两个阶段:初期有监督学习算法与深度有监督学习算法。液体状态机和脉冲深度信念网络...原创 2020-12-28 19:53:01 · 597 阅读 · 0 评论