RBF神经网络的matlab简单实现

2023-05-16

径向基神经网络

1、径向基函数 (Radial Basis Function,RBF) 神经网络是一种性能良好的前向网络,具有最佳逼近、训练简洁、学习收敛速度快以及克服局部最小值问题的性能,目前已经证明径向基网络能够以任意精度逼近任意连续的函数。因此它已经被广泛应用于模式识别、非线性控制和图像处理等领域。

2、RBF神经网络的结构--RBF 神经网络的基本思想是用径向基函数(RBF)作为隐单元,的“基” ,构成隐含层的空间,隐含层对输入矢量进行变换,将低维的模式输入数据转换到高位空间内,使得在低维空间内的线性不可分为题在高维空间内线性可分。

3、RBF 神经网络神经网络有很强的非线性拟合能力,可映射任意复杂的非线性关系,而且学习规则简单,便于计算机实现。具有很强的鲁棒性、记忆能力、非线性映射能力以及强大的自学习能力,因此有很大的应用市场。RBF 神经网络是一种性能优良的前馈型神经网络,RBF 网络可以任意精度逼近任意的非线性函数,且具有全局逼近能力,从根本上解决了BP网络的局部最优问题,而且拓扑结构紧凑,结构参数可实现分离学习,收敛速度快。RBF 网络和模糊逻辑能够很好的实现互补,提高神经网络的学习泛化能力。

4、RBF 神经网络结构与多层前向网络类似,它一般由输入层、隐含层和输出层构成。第一层为输入层,由信号源节点组成,传递信号到隐层。第二层为隐层,隐层节点的变换函数是对中心点径向对称且衰减的非负非线性函数。第三层为输出层,一般是简单的线性函数,对输入模式作出响应。其结构如图3.8所示

RBF 神经网络输入层到隐含层之间的权值固定为1,隐含层单元的传递函数采用了径向基函数,隐含层神经元是将该层权值向量Wi与输入向量Xi之间的矢量距离与偏差bi 相乘后作为该神经元激活函数的输入。若取径向基函数为高斯函数,则神经元的输出为:

xi为核函数的中心,σ为函数宽度参数,用它来确定每一个径向基层神经元对其输入矢量,也就是X与w之间距离相对应的径向基函数的宽度。从上面的RBF网络的结构图我们可以,确定RBF网络结构的过程就是确定隐含层神经元的中心
xi、宽度σ以及输出权值w的过程。

5、RBF网络的学习算法

RBF网络要学习的参数有三个:基函数的中心xi和方差σ以及隐含层与输出层之间的权值w 。根据径向基函数中心选取方法的不同,RBF网络有多种学习方法,其中最常用的有四种学习方法:随机选取中心法、k-均值聚类算法、自组织选取中心法和正交最小二乘法。

①、确定基函数的中心xi

②、确定基函数的方差σ

一旦RBF 神经网络的中心确定以后,那么其宽度由下列公式来确定:

其中,n为隐含层单元的个数,di为所选中心之间的最大距离。

③、隐含层到输出层之间的权值w

 

 

RBF神经网络的介绍:点击打开链接

实验数据集 点击打开链接

[cpp]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. clear all  
  2. clc   %清除命令窗口  
  3. load Data-Ass2;  
  4. d=data';  %求转置  
  5. dat=d(1:2500,1:2);  
  6. labels=d(1:2500,3);  
  7.   
  8.   
  9. inputNums=2; %输入层节点  
  10. outputNums=1; %输出层节点  许多情况下直接用1表示  
  11. hideNums=10; %隐层节点数  
  12. maxcount=1000; %最大迭代次数  
  13. samplenum=2500; %一个计数器,无意义  
  14. precision=0.001; %预设精度  
  15. alpha=0.01; %学习率设定值  
  16. a=0.5; %BP优化算法的一个设定值,对上组训练的调整值按比例修改   
  17. error=zeros(1,maxcount+1); %error数组初始化;目的是预分配内存空间  
  18. errorp=zeros(1,samplenum); %同上  
  19. w=rand(hideNums,outputNums); %10*3;w表隐层到输出层的权值  
  20.   
  21. %求聚类中心  
  22. [Idx,C]=kmeans(dat,hideNums);  
  23. %X 2500*2的数据矩阵   
  24. %K 表示将X划分为几类   
  25. %Idx 2500*1的向量,存储的是每个点的聚类标号   
  26. %C 10*2的矩阵,存储的是K个聚类质心位置  
  27.   
  28. %求扩展常数  
  29. dd=zeros(1,10);   
  30. for i=1:10  
  31. dmin=10000;  
  32. for j=1:10   
  33. ddd=(C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2;  
  34. if(ddd<dmin&&i~=j)  
  35. dmin=ddd;  
  36. end  
  37. end  
  38. dd(i)=dmin;  
  39. end  
  40.   
  41. %b为进行计算后隐含层的输入矩阵  
  42. b=zeros(2500,10);   
  43. for i=1:2500  
  44. for j=1:10   
  45. b(i,j)=exp( -( (dat(i,1)-C(j,1))^2+(dat(i,2)-C(j,2))^2 )/(2*dd(j)) );%dd为扩展常数  
  46. end  
  47. end  
  48.   
  49.   
  50. count=1;  
  51. while (count<=maxcount) %结束条件1迭代1000次  
  52.   
  53. c=1;  
  54. while (c<=samplenum)%对于每个样本输入,计算输出,进行一次BP训练,samplenum为2500  
  55.   
  56.     %o输出的值  
  57.     double o;  
  58.     o=0.0;  
  59.     for i=1:hideNums  
  60.         o=o+b(c,i)*w(i,1);  
  61.     end  
  62.   
  63.     %反馈/修改;   
  64.     errortmp=0.0;    
  65.     errortmp=errortmp+(labels(c,1)-o)^2; % 第一组训练后的误差计算    
  66.     errorp(c)=0.5*errortmp;       
  67.     yitao=labels(c,1)-o; %输出层误差  
  68.     for i=1:hideNums  %调节到每个隐藏点到输出点的权重  
  69.         w(i,1)=w(i,1)+alpha*yitao*b(c,i);%权值调整  
  70.     end  
  71.   
  72.     c=c+1; %输入下一个样本数据  
  73. end  %第二个while结束;表示一次训练结束  
  74.   
  75.   
  76. %求最后一次迭代的误差  
  77. double tmp;  
  78. tmp=0.0; %字串8   
  79. for i=1:samplenum  
  80.     tmp=tmp+errorp(i)*errorp(i);%误差求和  
  81. end  
  82. tmp=tmp/c;  
  83. error(count)=sqrt(tmp);%求迭代第count轮的误差求均方根,即精度  
  84. if (error(count)<precision)%另一个结束条件  
  85.     break;  
  86. end  
  87. count=count+1;%训练次数加1  
  88. end  
  89.   
  90. %测试  
  91. test=zeros(500,10);   
  92. for i=2501:3000  
  93. for j=1:10   
  94. test(i-2500,j)=exp( -( (d(i,1)-C(j,1))^2+(d(i,2)-C(j,2))^2 )/(2*dd(j)) );%dd为扩展常数  
  95. end  
  96. end  
  97.   
  98. count=0;  
  99. for i=2501:3000  
  100. net=0.0;  
  101. for j=1:hideNums  
  102. net=net+test(i-2500,j)*w(j,1);  
  103. end  
  104. if( (net>0&&d(i,3)==1) || (net<=0&&d(i,3)==-1) )  
  105. count=count+1;  
  106. end  
  107. end  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RBF神经网络的matlab简单实现 的相关文章

  • micropython安装ros_ROS2与STM32入门教程-microROS的freertos版本

    ROS2与STM32入门教程 micro ros的freertos版本 说明 xff1a 介绍如何安装使用micro ros 测试开发板 xff1a olimex stm32 e407 步骤 xff1a 安装ros2版本foxy xff0c
  • C#中通过com组件操作excel不能关闭的问题

    问题 xff1a 当用如下代码操作完Excel xff0c 虽然调用了Application的Quit 方法 xff0c 但发现Excel进程并没退出 object missing 61 System Reflection Missing
  • 交叉编译的概念及交叉编译工具的安装

    目录 一 什么是交叉编译 二 为什么要交叉编译 xff1f 三 交叉编译链的安装 四 相关使用方法 五 软连接 一 什么是交叉编译 交叉编译是指将一种编程语言编写的程序编译成另一种编程语言的程序 xff0c 通常是在不同的操作系统或硬件环境
  • .cn根服务器被攻击之后

    如果是互联网行业的人员应该知道 xff0c 8月25日凌晨 xff0c 大批的 cn 域名的网站都无法访问 xff0c 当然包括weibo cn等大型网站 个人比较奇怪的一件事情是 xff0c 微博PC网页版是 www weibo com
  • [UML]UML系列——包图Package

    系列文章 UML UML系列 用例图Use Case UML UML系列 用例图中的各种关系 xff08 include extend xff09 UML UML系列 类图Class UML UML系列 类图class的关联关系 xff08
  • VBA编程中的 sheet1 与 sheets(1)的区别

    自己理解 sheet1是一个专有名词 xff0c 不是任何对象的属性 xff0c 只能单独使用 xff0c 特指代码所在工作簿的那个sheet1 和顺序无关 xff0c 是固定的一个表 xff0c sheets 1 则和顺序有关 参考资料
  • python练习笔记——计算1/1-1/3+1/5-1/7……的和

    1 1 1 3 43 1 5 1 7 43 求100000个这样的分式计算之为是多少 xff1f 将此值乘以4后打印出来 xff0c 看看是什么 xff1f num list 61 count 61 1 i 61 1 while True
  • Django Model获取指定列的数据

    model一般都是有多个属性的 xff0c 但是很多时候我们又只需要查询特定的某一个 xff0c 这个时候可以用到values和values list 利用values查询 from attendence models import Emp
  • HIVE自定义函数的扩展

    作者简介 淳敏 xff0c 物流架构师同时也是一位team leader xff0c 工作认真负责 xff0c 曾在休假期间 面向大海编程 xff0c 不明觉厉 在Hive中 xff0c 用户可以自定义一些函数 xff0c 用于扩展Hive
  • Flink Window分析及Watermark解决乱序数据机制深入剖析-Flink牛刀小试

    版权声明 xff1a 本套技术专栏是作者 xff08 秦凯新 xff09 平时工作的总结和升华 xff0c 通过从真实商业环境抽取案例进行总结和分享 xff0c 并给出商业应用的调优建议和集群环境容量规划等内容 xff0c 请持续关注本套博
  • 使用Network Recycle Bin启用映射网络驱动器上的回收站

    前言 在内网环境中我们经常会使用NAS或者Samba在Windows中映射网络驱动器 xff0c 方便局域网用户实时共享交换数据 但当存储在网络或映射网络上的任何文件被删除时 xff0c 该文件将被永久删除 它不会去到本地计算机回收站 xf
  • 为强化机器学习性能,ARM推出两款新GPU Mali-G52和Mali-G31

    ARM于近期推出了两款图形处理器产品 xff0c 分别为Mali G52以及Mali G31 xff0c 主要应用于主流移动市场 由于移动端AI计算 图形处理需求的与日俱增 xff0c GPU之于手机SoC的作用日渐凸显 xff0c ARM
  • 判断python字典某个键的值是否为空

    2019独角兽企业重金招聘Python工程师标准 gt gt gt code if dict get key 0 61 61 0 值即为空 code 转载于 https my oschina net u 2254175 blog 37213
  • javascript中的==和===

    判断两个变量是否相等是程序设计中非常重要的运算 在处理原始值时 xff0c 这种运算相当简单 xff0c 但涉及对 象 xff0c 任务就稍有点复杂 ECMAScript提供了两套运算符处理这个问题 xff0c 等号和非等号用于处理原始值
  • 如何检测资源泄露

    Window上我们常见的资源泄露包括内存和对象句柄泄露 xff0c 下面讨论下对各类泄露的检测方法 关于内存泄漏 xff0c 我以前写过2篇文章 xff1a C 43 43 中基于Crt的内存泄漏检测 xff0c 基于WinDbg的内存泄漏
  • WPF触屏Touch事件在嵌套控件中的响应问题

    前几天遇到个touch事件的坑 xff0c 记录下来以增强理解 具体是 想把一个listview嵌套到另一个listview xff0c 这时候如果list view xff08 子listview xff09 的内容过多超过容器高度 xf
  • 设计模式-工厂模式

    xl echo编辑整理 xff0c 欢迎转载 xff0c 转载请声明文章来源 欢迎添加echo微信 微信号 xff1a t2421499075 进行交流学习 百战不败 xff0c 依不自称常胜 xff0c 百败不颓 xff0c 依能奋力前行
  • IBM AIX5.3 linux下C/C++实现HTTPS接口

    最近在工作中需要开发一个Https接口 xff0c 其不同于http soap等协议 xff0c 可以直接组织报文并发送 xff0c 不存在加密 xff0c 认证和获取密钥等安全操作 且之前开发的项目没有开发过这类接口 xff0c 所以当时
  • c语言把网络字节序转换成小端,网络编程字节序转换问题

    一 xff1a 大小端 一 大小端区别 字节 区别是依据 xff1a 计算机系统在存储数据时起始地址是高地址仍是低地址 小端 xff1a 从低地址开始存储 大端 xff1a 从高地址开始存储 补充 xff1a 这里大小端是按字节区别的 xf
  • [转载]Linux C 字符串函数 sprintf()、snprintf() 详解

    一 sprintf 函数详解 在将各种类 型的数据构造成字符串时 xff0c sprintf 的强大功能很少会让你失望 由于 sprintf 跟 printf 在用法上几乎一样 xff0c 只是打印的目的地不同而已 xff0c 前者打印到字

随机推荐

  • http Authorization

    MDN 文档 HTTP协议中的 Authorization 请求消息头含有服务器用于验证用户代理身份的凭证 xff0c 通常会在服务器返回401 Authorization lt type gt lt credentials gt curl
  • linux编译动态库未定义,GCC链接库的一个坑:动态库存在却提示未定义动态库的函数...

    背景 在GCC中已经指定链接库 xff0c 然而编译时却提示动态库函数未定义 xff01 测试出现的错误提示如下 xff1a GMPY 64 13 48 tmp gcc o test L lmylib test c tmp ccysQZI3
  • .inf右键没有安装菜单项解决办法

    打开我的电脑 xff0c 工具菜单中的文件夹选项 切换至文件类型选项卡 xff0c 在其中找到inf文件 xff0c 点高级按钮 xff0c 双击安装 I xff0c 没有新建一个 按如下内容修 改 用于执行操作的应用程序C WINDOWS
  • C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间...

    转 自 xff1a http www cnblogs com rocketfan archive 2009 10 02 1577361 html 1 编译单元 xff1a 一个 cc或 cpp文件作为一个编译单元 xff0c 生成 o 2
  • request方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1request概述 request是Servlet service 方法的一个参数 xff0c 类型为javax servlet http HttpServletRequ
  • Eclipse调试:改变颜色, 背景与字体大小 和xml字体调整

    Eclipse背景颜色修改 xff1a 操作界面默认颜色为白色 对于我们长期使用电脑编程的人来说 xff0c 白色很刺激我们的眼睛 xff0c 所以我经常会改变workspace的背景色 xff0c 使眼睛舒服一些 设置方法如下 xff1a
  • ASM汇编常用跳转指令-极速查

    作者 xff1a 逆向驿站 微信公众号 xff1a 逆向驿站 知乎 xff1a 逆向驿站 若不是老鸟 xff0c 是不是经常为各种JXX汇编跳转指令查资料 xff1f 影响效率 xff0c 更影响潜意识整体分析的 34 灵光一现 34 本公
  • Android签名机制及原理

    Android签名机制及原理 Android系统在安装APK的时候 xff0c 首先会检验APK的签名 xff0c 如果发现签名文件不存在或者校验签名失败 xff0c 则会拒绝安装 xff0c 所以应用程序在发布之前一定要进行签名 给APK
  • chrome扩展获取页面dom对象信息

    chrome扩展 xff0c 在popup页面 xff0c 给页面对象绑定点击事件 xff0c 获取当前tab加载页面的DOM对象信息 本chrome扩展功能主要用于获取百度搜索输入框中用户输入的关键字 效果如下 源代码如下 注意 xff1
  • CentOS 7之FirewallD与iptables的区别

    2019独角兽企业重金招聘Python工程师标准 gt gt gt FirewallD 即Dynamic Firewall Manager of Linux systems xff0c Linux系统的动态防火墙管理器 xff0c 是 ip
  • goland编辑器护眼背景颜色设置

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 打开goland软件 菜单栏 file settings 打开如下 搞定 色调 xff1a 85 xff1b 饱和度 xff1a 123 xff1b 亮度 xff1a 20
  • 让IE8支持HTML5及canvas功能!

    让IE8支持HTML5及canvas功能 xff01 微软出的IE9支持HTML5 xff0c 但因为不支持XP系统 xff0c 暂时我还用不了 即使能用 xff0c 现阶段如果开发HTML5页面 xff0c 并考虑到兼容性问题的话 xff
  • 卷积神经网络(CNN)的训练过程

    卷积神经网络的训练过程 卷积神经网络的训练过程分为两个阶段 第一个阶段是数据由低层次向高层次传播的阶段 xff0c 即前向传播阶段 另外一个阶段是 xff0c 当前向传播得出的结果与预期不相符时 xff0c 将误差从高层次向底层次进行传播训
  • 编程常用英语词汇大全

    编程常用英语词汇大全 很实用的编程英语词库 xff0c 共收录一千五百余条词汇 第一部分 xff1a application 应用程式 应用 应用程序 application framework 应用程式框架 应用框架 应用程序框架 arc
  • [LTMP搭建] Centos 6.5 安装配置 Tengine

    接上篇 xff1a http www cnblogs com antarctican p 3752812 html 安装PHP 一 安装依赖的扩展 记得前几天编译tengine xff0c 不使用 with http lua module
  • .net项目移植后的虚拟目录的配置问题

    VS NET 2003 开发环境打开此项目 xff08 MyWeb xff09 时 xff0c 出现如果如下问题 xff1a 无法从 Web 服务器获取项目文件 无法打开 Web 项目 MyWeb 文件路径 C Inetpub wwwroo
  • JS 柯里化 (curry)

    用 JS 理解柯里化 函数式编程风格 xff0c 试图以函数作为参数传递 xff08 回调 xff09 和无副作用的返回函数 xff08 修改程序的状态 xff09 很多语言采用了这种编程风格 JavaScript xff0c Haskel
  • C语言头文件编程,C语言编程规范-头文件(Day2)

    1 头文件 背景 对于C语言来说 xff0c 头文件的设计体现了大部分的系统设计 不合理的头文件布局是编译时间过长的根本原因 xff0c 不合理的头文件实际上是不合理的设计 术语定义 依赖 xff1a 本章节特指编译依赖 若x h包含y h
  • Win10共享打印机所需要的设置(无需密码访问实现打印机共享,共享不要密码)...

    原文 xff1a https m baidu com from 61 1086k bd page type 61 1 ssid 61 0 uid 61 0 pu 61 usm 64 0 sz 64 1320 1002 ta 64 iphon
  • RBF神经网络的matlab简单实现

    径向基神经网络 1 径向基函数 Radial Basis Function xff0c RBF 神经网络是一种性能良好的前向网络 xff0c 具有最佳逼近 训练简洁 学习收敛速度快以及克服局部最小值问题的性能 xff0c 目前已经证明径向基