目录
一、SNN基础知识讲解
Spiking Neural Network(脉冲神经网络,SNN)简介
SNN和传统ANN的区别
ANN转SNN的理论基础
SNN的实现——spikingjelly
二、DEAP数据集介绍
DEAP数据集组成(Python预处理版128Hz采样)
分类依据——基于valence 和 arousal的值将情绪分为四类
DEAP中关于40个通道的解释
本文使用的数据集预处理介绍
三、使用SNN搭建一维Resnet网络进行情绪分类
SNN_Resnet代码实现
重点代码解读——IF神经元
尾言
本文概述:SNN全称为脉冲神经网络是第三代神经网络,目前对SNN的研究相对来说还是比较少的,因此可以作为一个论文创新点。本文展示了如何使用SNN搭建一个ResNet网络去对DEAP数据集进行情绪四分类。
作者介绍:作者本人是一名人工智能炼丹师,目前在实验室主要研究的方向为生成式模型,对其它方向也略有了解,希望能够在CSDN这个平台上与同样爱好人工智能的小伙伴交流分享,一起进步。谢谢大家鸭~~~
讯享网如果你觉得这篇文章对您有帮助,麻烦点赞、收藏或者评论一下,这是对作者工作的肯定和鼓励。
一、SNN基础知识讲解
Spiking Neural Network(脉冲神经网络,SNN)简介
第一代神经网络(感知器),第二代神经网络(ANN)它们都是基于神经脉冲的发放频率进行编码,但是神经元的脉冲发放频率并不能完全捕获脉冲序列种包含的信息,因此第三代神经网络(SNN)登场了。第三代神经网络具有更强的生物可解释性的,神经网络内部的信息传递是由脉冲序列完成的。
SNN和传统ANN的区别
在传统的前馈人工神经网络中,两个神经元之间仅有一个突触连接,即输出只有一个权值去决定,这些权值受到的是神经脉冲的发放频率的影响。
ANN转SNN的理论基础
SNN相比于ANN,产生的脉冲是离散的,这有利于高效的通信,但是SNN直接训练需要比较多的资源,且代码实现也比较复杂,因此我们自然会想到使用现在非常成熟的ANN转换到SNN。
现在SNN主流的方式是采用频率编码,因此对于输出层,我们会用神经元输出脉冲数来判断类别。发放率和ANN有没有关系呢?答案是肯定的,ANN中的ReLU神经元非线性激活和SNN中IF神经元(采用减去阈值 V_threshold 方式重置)的发放率有着极强的相关性,我们可以借助这个特性来进行转换

如上图(左图为IF脉冲神经元,右图为ReLU激活函数)所示,在[0,1]范围内,IF脉冲神经元和ReLU激活函数的曲线是一样的,因此在这个范围可以用IF脉冲神经元替换掉ReLU激活函数从而将ANN转变为SNN。
但是需要注意的是,脉冲频率不可能高于1,因此IF神经元无法拟合ANN中ReLU的输入大于1的情况。那对于输入不在这个范围的数据有两种解决办法,一种是先对数据进行归一化到(0,1)范围,然后在经过一个泊松编码器转化为0,1脉冲。另一种是直接将第一次出现IF脉冲神经元之前的网络层视作一个能将数据编码到[0,1]的编码层
SNN的实现——spikingjelly
spikingjelly 是一个基于 PyTorch ,使用脉冲神经网络(Spiking Neural Network, SNN)进行深度学习的框架。
中文文档连接:SpikingJelly(惊蛰)
强烈推荐使用这个库,能省去很多麻烦
二、DEAP数据集介绍
DEAP数据集组成(Python预处理版128Hz采样)
DEAP数据集包含32个.mat文件,一部分字典键为data的数据,内含每名被实验者的脑电实验数据,数据采样频率为128Hz,另一部分为字典键为labels的数据,形状为40*4的矩阵,四列分别代表效价、唤醒度、支配和喜欢的值,其值由被试者在观看40段视频后进行打分得到。
分类依据——基于valence 和 arousal的值将情绪分为四类

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/37019.html