Matlab的BP神经网络工具箱及其在函数逼近中的应用

1.神经网络工具箱概述

Matlab神经网络工具箱几乎包含了现有神经网络的最新成果,神经网络工具箱模型包括感知器、线性网络、BP网络、径向基函数网络、竞争型神经网络、自组织网络和学习向量量化网络、反馈网络。本文只介绍BP神经网络工具箱。

2.BP神经网络工具箱介绍

BP神经网络学习规则是不断地调整神经网络的权值和偏值,使得网络输出的均方误差和最小。下面是关于一些BP神经网络的创建和训练的名称:

(1)newff:创建一前馈BP网络(隐含层只有一层)

(2)newcf:创建一多层前馈BP网络(隐含层有多层)

(3)train:训练一个神经网络

(4)sim:仿真一个神经网络

以上几个是最主要的语句,在后面的实例应用中会详细说明用法。

3.BP神经网络工具箱在函数逼近中的应用

BP神经网络具有很强的映射能力,主要用于模式识别分类、函数逼近、函数压缩等。下面通过实例来说明BP网络在函数逼近方面的应用。

本文需要逼近的函数是f(x)=1+sin(k*pi/2*x),其中,分别令k=2、3、6进行仿真,设置隐藏层神经元数目为n,n可以改变,便于后面观察隐藏层节点与函数逼近能力的关系。

3.1 k=2,n=5时的仿真实验

先作出目标曲线的图形,以下为matlab代码:

clear all
clc
%%%%%%%%%%设置网络输入值和目标值%%%%%%%%%%
k=2;%f(x)中的k值
x=[-1:.05:8];
f=1+sin(k*pi/2*x);
plot(x,f,‘-‘);
title(‘要逼近的非线性函数‘);
xlabel(‘时间‘);
ylabel(‘非线性函数‘);

接着用newff函数建立BP神经网络结构,以下为matlab代码:

%%%%%%%%%%建立网络%%%%%%%%%%
n=5;%隐藏层节点数
net = newff(minmax(x),[n,1],{‘tansig‘ ‘purelin‘},‘trainlm‘);
%对于初始网络,可以应用sim()函数观察网络输出。
y1=sim(net,x);
figure;
plot(x,f,‘-‘,x,y1,‘:‘)
title(‘未训练网络的输出结果‘);
xlabel(‘时间‘);
ylabel(‘仿真输出--原函数-‘);

代码中的tansig和purelin分别是输入层到隐藏层和隐藏层到输出层的激活函数,trainlm是训练函数(Levenberg-Marquardt算法训练BP网络)

仿真效果如下:

我们可以看到仿真的函数与目标函数相差甚远,这是因为使用newff()函数建立函数网络时,权值和阈值的初始化是随机的,所以网络输出结构很差,根本达不到函数逼近的目的。

因此接下来应用train()函数对网络进行训练后再进行仿真。训练之前,需要预先设置网络训练参数,这里只设置了训练的迭代次数和训练精度,其余参数使用默认值。训练神经网络的matlab代码如下:

%%%%%%%%%%设置训练网络参数%%%%%%%%%%
net.trainParam.epochs=200;  	%网络最大迭代次数设置为200
net.trainParam.goal=0.2;  		%网络训练精度设置为0.2
net=train(net,x,f);        		%开始训练网络;

训练后 得到的误差变化过程如下图所示,可以看出,在运行到第145步时,网络输出误差达到设定的训练精度。

训练好的网络进行仿真,代码如下:

%%%%%%%%%%仿真网络%%%%%%%%%%
 y2=sim(net,x);
 figure;
 plot(x,f,‘-‘,x,y1,‘:‘,x,y2, ‘--‘)
 title(‘训练后网络的输出结果‘);
 xlabel(‘时间‘);
 ylabel(‘仿真输出‘);

绘制网络输出曲线,与目标曲线和未训练网络的输出结果相比较,如下图所示:

由此可以看出,与未训练的曲线相比,经过训练之后的曲线和目标曲线更接近,这说明BP网络对非线性函数的逼近效果比较好。

接下来通过改变隐藏层的节点数来看其对网络逼近的效果

3.2 k=2,n=3、n=10时的仿真实验

将隐藏层节点数改为3,其他条件不变,仿真效果如下:

将隐藏层节点数改为10,其他条件不变,仿真效果如下:

由以上两张图可以看出,当n=10时,经过训练后的曲线基本跟目标曲线重合;当n=3时,逼近效果却很差,这说明改变隐藏层节点数对函数逼近的效果有一定影响。

4.总结

一般来说,隐藏层神经元数目越多,则BP网络逼近非线性函数的能力越强。由于本例中单隐含层的输入层和输出层神经元个数均为1,那么隐含层的个数可以根据设计

经验公式和该问题的实际情况相结合,通过实验选取最好的隐藏层节点数,使得逼近效果最佳。

原文地址:https://www.cnblogs.com/DLB511/p/10693386.html

时间: 2024-10-08 09:35:59

Matlab的BP神经网络工具箱及其在函数逼近中的应用的相关文章

[matlab]bp神经网络工具箱学习笔记

基本就三个函数: newff():创建一个bp神经网络 train():训练函数 sim():仿真函数 同时具有可视化界面,但目前不知道可视化界面如何进行仿真,且设置不太全 工具箱:Neural net fitting textread使用方法:http://blog.sina.com.cn/s/blog_9e67285801010bju.html ex1. clear; clc; %注意P矩阵,matlab默认将一列作为一个输入 P=[0.5152 0.8173 1.0000 ; 0.8173

BP神经网络及其在教学质量评价中 的应用

本文学习笔记是自己的理解,如有错误的地方,请大家指正批评,共同进步,谢谢! 之前的教学质量评价,只是通过对教学指标的简单处理,如求平均值或人为的给出各指标的权值来加权求和,其评价结果带有很大主观性.利用BP神经网络建立教学质量评价系统的模型,通过调查分析得到教学评价指标,将其标量化成确定的数据作为其输入,用BP神经网络训练后作为实际输出,将之前得到的教学效果作为期望输出.比较期望输出与实际输出的误差.当误差达到期望的最小值时,认为训练成功.训练成功后可以得到比较准确的权值和阈值,用训练成功后的网

机器学习之实战matlab神经网络工具箱

上节在 <机器学习之从logistic到神经网络算法> 中,我们已经从原理上介绍了神经网络算法的来源与构造,并编程实战了简单神经网络对于线性与非线性数据的分类测试实验.看过上节的可能会发现,上节实现的算法对于非线性数据的分类效果并不是非常完美,有许多值得优化的地方.而matlab作为一个科学计算软件,本身集成了非常多的优化算法,其中的神经网络工具箱就是其中一个优秀的工具箱,本节将以工具箱中的函数重新实验上节中的分类实验. 首先来了解这个工具箱.我们说,一个简单的神经网络就如下图所示: 这是我们

【转载】BP神经网络

原文地址:http://blog.csdn.net/acdreamers/article/details/44657439 今天来讲BP神经网络,神经网络在机器学习中应用比较广泛,比如函数逼近,模式识别,分类,数据压缩,数据 挖掘等领域.接下来介绍BP神经网络的原理及实现. Contents   1. BP神经网络的认识   2. 隐含层的选取   3. 正向传递子过程   4. 反向传递子过程   5. BP神经网络的注意点   6. BP神经网络的C++实现 1. BP神经网络的认识    

paper 75:使用MATLAB的神经网络工具箱创建神经网络

% 生成训练样本集 clear all; clc; P=[110 0.807 240 0.2 15 1 18 2 1.5; 110 2.865 240 0.1 15 2 12 1 2; 110 2.59 240 0.1 12 4 24 1 1.5; 220 0.6 240 0.3 12 3 18 2 1; 220 3 240 0.3 25 3 21 1 1.5; 110 1.562 240 0.3 15 3 18 1 1.5; 110 0.547 240 0.3 15 1 9 2 1.5]; 0

BP神经网络及matlab实现

本文主要内容包括: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 . 第0节.引例  本文以Fisher的Iris数据集作为神经网络程序的测试数据集.Iris数据集可以在http://en.wikipedia.org/wiki/Iris_flower_data_set  找到.这里简要介绍一下Iris数据集: 有一批Iris花,已知这批Iris花可分为3个品种,现需要对其进行分类.不同品种的Iris花的花萼长度.花萼

详细MATLAB 中BP神经网络算法的实现

MATLAB 中BP神经网络算法的实现 BP神经网络算法提供了一种普遍并且实用的方法从样例中学习值为实数.离散值或者向量的函数,这里就简单介绍一下如何用MATLAB编程实现该算法. 具体步骤 这里以一个普遍实用的简单案例为例子进行编程的说明. 假设一组x1,x2,x3的值对应一个y值,有2000组这样的数字,我们选择其中1900组x1,x2,x3和y作为样本,其余100组x1,x2,x3作为测试数据来验证.   首先需要读取这些数据,并把数据赋值给input 和 output . 我是把数据存储

遗传算法优化BP神经网络——非线性函数拟合

遗传算法基本的操作分为: 1.选择操作 2.交叉操作 3.变异操作 遗传算法的基本要素包括染色体编码方法.适应度函数.遗传操作和运行参数. 遗传算法优化BP神经网络算法流程如图3-4所示:

通俗讲解BP神经网络

BP(backward propogation)神经网络是广泛使用的一种神经网络.要我说,神经网络就是一种高端的插值技术.相应比较好的实现教程有: Matlab工具箱版本(使用简便,但是不适用于理解原理):漫谈ANN(2):BP神经网络: Matlab原理实现(根据原理实现的版本,未使用神经网络工具箱):简单易学的机器学习算法--神经网络之BP神经网络: C++原理实现(根据原理实现):BP神经网络原理及C++实战 三篇文章,第2.3篇适用于理解原理.详细的数学推导已经在里面了,就不赘述了.下面