RBF(径向基)神经网络 非线性函数回归的实现
2015-07-26 20:48
375 查看
径向基神将网络的神经元模型: 径向基神经王阔的节点激活函数采用径向基函数,通常定义空间任意一点到某一中心之间的欧氏距离的单调函数。
从模型可以得到,径向基神经网络的激活函数的输入向量是 输入向量和权重向量之间的距离作为自变量,随着权值和输入向量之间的距离减少,网络的输出时递增的,当输入向量和权重向量相等的时,达到最大值1,利用径向基神经网络和线性神经元可以建立广义回归神经网络,此种神经网络额可以适用函数的逼近方面的应用,径向基神经网络和竞争神经网络可以建立被概率神经网络,此种神经网络适合解决分类问题。
RBF神经网络的函数逼近问题:
newrb()函数-------------------------该函数用来设计一个径向基神经网络,
[net tr]=newrb(p,t,goal,spread,MN,DF)
goal为均方误差,sperad表示径向基函数的扩展速度,spread越大,输出结果月光花,但是太大耳朵spread值会导致数值计算的困难,MN表示你神经元的最大数目, DF为两次显示之间所添加的神经元数目, tr表示训练记录,
径向基神经网络对函数的拟合效果:
从模型可以得到,径向基神经网络的激活函数的输入向量是 输入向量和权重向量之间的距离作为自变量,随着权值和输入向量之间的距离减少,网络的输出时递增的,当输入向量和权重向量相等的时,达到最大值1,利用径向基神经网络和线性神经元可以建立广义回归神经网络,此种神经网络额可以适用函数的逼近方面的应用,径向基神经网络和竞争神经网络可以建立被概率神经网络,此种神经网络适合解决分类问题。
RBF神经网络的函数逼近问题:
% RBF网络的回归--非线性函数回归的实现 %% 清空环境变量 clc clear %% 产生输入 输出数据 % 设置步长 interval=0.01; % 产生x1 x2 x1=-1.5:interval:1.5; x2=-1.5:interval:1.5; % 按照函数先求得相应的函数值,作为网络的输出。 F =20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2); %% 网络建立和训练 % 网络建立 输入为[x1;x2],输出为F。Spread使用默认。 net=newrbe([x1;x2],F) %% 网络的效果验证 % 我们将原数据回带,测试网络效果: ty=sim(net,[x1;x2]); % 我们使用图像来看网络对非线性函数的拟合效果 figure plot3(x1,x2,F,'rd'); hold on; plot3(x1,x2,ty,'b-.'); view(113,36) title('可视化的方法观察准确RBF神经网络的拟合效果') xlabel('x1') ylabel('x2') zlabel('F') grid on
newrb()函数-------------------------该函数用来设计一个径向基神经网络,
[net tr]=newrb(p,t,goal,spread,MN,DF)
goal为均方误差,sperad表示径向基函数的扩展速度,spread越大,输出结果月光花,但是太大耳朵spread值会导致数值计算的困难,MN表示你神经元的最大数目, DF为两次显示之间所添加的神经元数目, tr表示训练记录,
径向基神经网络对函数的拟合效果:
% RBF网络的回归--非线性函数回归的实现 %% 清空环境变量 clc clear %% 产生训练样本(训练输入,训练输出) % ld为样本例数 ld=400; % 产生2*ld的矩阵 x=rand(2,ld); % 将x转换到[-1.5 1.5]之间 x=(x-0.5)*1.5*2; % x的第一行为x1,第二行为x2. x1=x(1,:); x2=x(2,:); % 计算网络输出F值 F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2); %% 建立RBF神经网络 % 采用approximate RBF神经网络。spread为默认值 net=newrb(x,F); %% 建立测试样本 % generate the testing data interval=0.1; [i, j]=meshgrid(-1.5:interval:1.5); row=size(i); tx1=i(:); tx1=tx1'; tx2=j(:); tx2=tx2'; tx=[tx1;tx2]; %% 使用建立的RBF网络进行模拟,得出网络输出 ty=sim(net,tx); %% 使用图像,画出3维图 % 真正的函数图像 interval=0.1; [x1, x2]=meshgrid(-1.5:interval:1.5); F = 20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2); subplot(1,3,1) mesh(x1,x2,F); zlim([0,60]) title('真正的函数图像') % 网络得出的函数图像 v=reshape(ty,row); subplot(1,3,2) mesh(i,j,v); zlim([0,60]) title('RBF神经网络结果') % 误差图像 subplot(1,3,3) mesh(x1,x2,F-v); zlim([0,60]) title('误差图像') set(gcf,'position',[300 ,250,900,400])
相关文章推荐
- [转]Android 网络通信框架Volley简介(Google IO 2013)
- [转]Android访问网络,使用HttpURLConnection还是HttpClient
- 在局域网内常见传输的网络协议
- Android访问网络
- 云计算和大数据时代网络技术揭秘(十七)VOQ机制
- 用Eclipse进行Java web开发时,错误:HttpServlet was not found on the Java
- C语言 取整 http://www.360doc.com/content/11/0429/17/3931678_113204596.shtml
- 寻找正在连接中的网络连接
- 感知机与多层网络
- IP地址、子网掩码、网络号、主机号、网络地址、主机地址
- 一个简单网络服务器类的实现
- sqlserver2008 中使用MSXML2.ServerXMLHttp拼装soap调用webservice
- tcp数据包的标志位
- 技术向:一文读懂卷积神经网络
- linux_c 网络开发日记(2)GCC简介
- HTTP Live Streaming直播(iOS直播)技术分析与实现
- 读书笔记--TCP传输的可靠性的体现
- 网络爬虫+刷博+python代码实现
- Effective TCP/IP Programming读书笔记
- Android实战简易教程-第二十八枪(基于Bmob实现头像图片设置和网络上传功能!)