使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

这篇具有很好参考价值的文章主要介绍了使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

1.1第一代神经网络

1.2 第二代神经网络:BP 神经网络

1.3 第三代神经网络:脉冲神经网络

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码实现


💥1 概述

脉冲神经网络简介:

脉冲神经网络 (SNN) 属于第三代神经网络模型,实现了更高级的生物神经模拟水平。除了神经元和突触状态之外,SNN 还将时间概念纳入了其操作之中,是一种模拟大脑神经元动力学的一类很有前途的模型。

那么什么是第一代和第二代神经网络模型呢?

1.1第一代神经网络

第一代神经网络又称为感知器,在1950年左右被提出来,它的算法只有两层,输入层输出层,主要是线性结构。它不能解决线性不可分的问题,对稍微复杂一些的函数都无能为力,如异或操作。

1.2 第二代神经网络:BP 神经网络

为了解决第一代神经网络的缺陷,在1980年左右 Rumelhart、Williams 等人提出第二代神经网络多层感知器 (MLP)。和第一代神经网络相比,第二代在输入层之间有多个隐含层的感知机,可以引入一些非线性的结构,解决了之前无法模拟异或逻辑的缺陷。

第二代神经网络让科学家们发现神经网络的层数直接决定了它对现实的表达能力,但是随着层数的增加,优化函数愈发容易出现局部最优解的现象,由于存在梯度消失的问题,深层网络往往难以训练,效果还不如浅层网络。

所有对目前机器学习有所了解的人都听说过这样一个事实:目前的人工神经网络是第二代神经网络。它们通常是全连接的,接收连续的值,输出连续的值。尽管当代神经网络已经让我们在很多领域中实现了突破,但它们在生物学上是不精确的,其实并不能模仿生物大脑神经元的运作机制。

1.3 第三代神经网络:脉冲神经网络

第三代神经网络,脉冲神经网络 (Spiking Neural Network,SNN) ,旨在弥合神经科学和机器学习之间的差距,使用最拟合生物神经元机制的模型来进行计算,更接近生物神经元机制。脉冲神经网络与目前流行的神经网络和机器学习方法有着根本上的不同。SNN 使用脉冲——这是一种发生在时间点上的离散事件——而非常见的连续值。每个峰值由代表生物过程的微分方程表示出来,其中最重要的是神经元的膜电位。本质上,一旦神经元达到了某一电位,脉冲就会出现,随后达到电位的神经元会被重置。对此,最常见的模型是 Leaky Integrate-And-Fire (LIF) 模型。此外,SNN 通常是稀疏连接的,并会利用特殊的网络拓扑。

📚2 运行结果

使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

主函数部分代码:

clear allclose allclc%% Fixed parameters across all simulationsdt = 0.00001; %time step N = 2000; %Network Sizetd = 0.02; %decay time tr = 0.002; %Rise time %% T = 15; tmin = 5; tcrit = 10; nt = round(T/dt); tx = (1:1:nt)*dt;  xz = sin(2*tx*pi*5)'; G = 10; Q = 10^4; %% m = min(size(xz)); %dimensionality of teacher E = Q*(2*rand(N,m)-1); %encodersBPhi = zeros(N,m);  %Decoders%% Compute Neuronal Intercepts and Tuning Curves initial = 0;p = 0.1; %Sparse Coupling OMEGA = G*randn(N,N).*(rand(N,N)<p)/(sqrt(N)*p); %Random initial weight matrix %Set the sample row mean of the weight matrix to be 0 to strictly enforce%balance.  for i = 1:1:N     QS = find(abs(OMEGA(i,:))>0);    OMEGA(i,QS) = OMEGA(i,QS) - sum(OMEGA(i,QS))/length(QS);end%% Storage Matrices and Initialization store = 10; %don't store every time step, saves time.  current = zeros(nt,m);  %storage variable for output current IPSC = zeros(N,1); %post synaptic current h = zeros(N,1); r = zeros(N,1); hr = zeros(N,1); JD = 0*IPSC;vpeak = pi; %peak and resetvreset = -pi; v = vreset + (vpeak-vreset)*rand(N,1); %initialze voltage v_ = v; %temporary storage variable for integration j = 1;time = zeros(round(nt/store),1);RECB = zeros(5,round(2*round(nt/store)));REC = zeros(10,round(nt/store));tspike = zeros(8*nt,2);ns = 0;ticSD = 0; BPhi = zeros(N,m);z = zeros(m,1);plot(tx(1:1:i),xz(1:1:i,:),'k','LineWidth',2), hold onplot(time(1:1:j),current(1:1:j,:),'b--','LineWidth',2), hold offxlim([dt*i-1,dt*i])xlabel('Time')ylabel('x(t)') figure(2)plot(time(1:1:j),RECB(1:5,1:1:j),'.') xlabel('Time')ylabel('\phi_j') figure(3)plot(tspike(1:1:ns,2), tspike(1:1:ns,1),'k.')ylim([0,100])xlabel('Time')ylabel('Neuron Index')end

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

​[1]李连江. 基于GPU的脉冲神经网络学习研究[D].华中科技大学,2015.文章来源地址https://www.toymoban.com/news/detail-425565.html

👨‍💻4 Matlab代码实现

到了这里,关于使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 神经网络训练中的 data splits 是什么

    在神经网络训练中,\\\"data splits\\\" 是指将可用数据集划分为不同的子集,以便在训练、验证和测试过程中使用。 通常,常见的数据拆分包括以下几个部分: 训练集(Training Set):这是用于训练神经网络模型的数据子集。通过在训练集上迭代训练模型,神经网络可以学习特征和模

    2024年02月16日
    浏览(39)
  • 一文通俗入门·脉冲神经网络(SNN)·第三代神经网络

    原创文章,转载请注明出处: https://blog.csdn.net/weixin_37864449/article/details/126772830?spm=1001.2014.3001.5502 如上动态图所示,脉冲网络由脉冲神经元连接而成,脉冲神经元输入为脉冲,输出也是脉冲,脉冲神经元内部有电动势v,v在没有接收到任何输入时会随着时间指数衰减到某个稳定

    2023年04月09日
    浏览(40)
  • 创建脉冲神经网络(一)

    我根据原来的分布式的设计,实现了分布式仿真的方法,但是对各种数据的存储一直不太熟练,所有的设计都记录在 分布式仿真思考(三)成功运行啦,哈哈哈-CSDN博客 在这里,我将每个进程都存储这全局的邻接表,本地邻接表,如下 在实例化神经元和突触时: 看一看出来在

    2024年02月04日
    浏览(41)
  • 使用pycharm连接远程GPU训练神经网络模型(超详细!)

    前言: 博主是一名学生党,因经费限制购买的电脑配置并不是很高,显存大小仅4GB,虽然日常学习时的模型训练基本能满足,但做项目或者有大模型训练需求时,就没办法满足要求了。今天这篇博客给大家分享一下如何利用pycharm连接远程GPU训练我们的神经网络模型,这篇文

    2024年02月20日
    浏览(45)
  • 【人工智能概论】 使用kaggle提供的GPU训练神经网络

    注册账号的时候可能会遇到无法进行人际验证的问题,因此可能需要科学上网一下。具体步骤略。 kaggle的GPU资源需要绑定手机号才能使用 点击右上角的头像。 点击Account 找到手机验证界面Phone Verification,会看到下图,根据1处的提示知,这种情况下手机是收不到验证码的,因

    2024年02月04日
    浏览(54)
  • 人工智能(pytorch)搭建模型10-pytorch搭建脉冲神经网络(SNN)实现及应用

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型10-pytorch搭建脉冲神经网络(SNN)实现及应用,脉冲神经网络(SNN)是一种基于生物神经系统的神经网络模型,它通过模拟神经元之间的电信号传递来实现信息处理。与传统的人工神经网络(ANN)不同,SNN 中的

    2024年02月08日
    浏览(50)
  • 配置使用云服务器训练神经网络模型——在阿里GPU服务器训练yolov5模型

    对于没有GPU训练机的人来讲,使用云服务器训练自己的模型应该最最优选择,只是在训练的时候开个按时计费的服务器,训练完成后保存环境镜像之后,可以完全停掉服务器,期间不产生任何费用,下次再训练时,启动环境就可以,很容易保护好自己的训练环境不受污染。

    2024年02月06日
    浏览(63)
  • 如何使用租用的云服务器实现神经网络训练过程(超详细教程,新手小白适用)

    超级感谢up主7_xun的B站教学视频: 适合深度学习小白的CV实战——在AutoDL上租用云服务器跑YOLOv5的全过程 链接:适合深度学习小白的CV实战——在AutoDL上租用云服务器跑YOLOv5的全过程_哔哩哔哩_bilibili 在GitHub中搜索yolov,点击第一个项目,ultralytics/yolov5 点击第一个项目进入后,

    2023年04月21日
    浏览(53)
  • matlab 使用预训练神经网络和SVM进行苹果分级(带图形界面)支持其他物品图片分级或者分类

    目录 数据集: 实验代码:alexnet版 如果你的matlab不是正版,先看这里: 数据集结构: 训练代码: 训练结果:  图形界面: 界面展示: 其他:   输出结果:         实验思路是使用预训练神经网络对图片进行特征提取,然后再使用SVM对得到的特征进行处理。         写

    2024年02月09日
    浏览(54)
  • openmv云端训练神经网络自动生成openmv的神经网络模型

    打开openmv工具栏如图所示,点击新数据集  弹出如下界面,这里我选择的是我自己新建的new date文件夹,你们选择自己新建的文件夹即可  接下来我们点击左边红框框起来的地方,可得到中间那个界面,可自己创建名称  左上角就是我创建好的两个,接下来我们点击下面红框

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包