《神经网络基础知识》word版.docx
《《神经网络基础知识》word版.docx》由会员分享,可在线阅读,更多相关《《神经网络基础知识》word版.docx(15页珍藏版)》请在冰豆网上搜索。
《神经网络基础知识》word版
实验十二:
神经网络及其在数据拟合中的应用(设计性实验)
一、实验目的
1、了解神经网络的基本知识。
2、学会用matlab神经网络工具箱进行数据拟合。
3、通过实例学习matlab神经网络工具箱的应用。
二、实验原理
人工神经网络是在对复杂的生物神经网络研究和理解的基础上发展起来的。
我们知道,人脑是由大约
个高度互连的单元构成,这些单元称为神经元,每个神经元约有
个连接。
仿照生物的神经元,可以用数学方式表示神经元,引入人工神经元的概念,并由神经元的互连可以定义出不同种类的神经网络。
1、神经网络的概念及结构
单个人工神经元的数学表示形式如图1所示。
其中,
为一组输入信号,它们经过权值
加权后求和,再加上阈值
,则得出
的值。
可以认为该值为输入信号与阈值所构成的广义输入信号的线性组合。
该信号经过传输函数
可以得出神经元的输出信号
。
图1
由若干个神经元相互连接,则可以构成一种网络,称为神经网络。
由于连接方式的不同,神经网络的类型也不同。
这里仅介绍前馈神经网络,因为其权值训练中采用误差逆向传播的方式,所以这类神经网络更多地称为反向传播(backpropagation)神经网络,简称BP神经网络。
BP网的基本结构如下图所示:
MATLAB的神经网络工具箱提供了现成的函数和神经网络类,可以使用newff()函数来建立一个前馈的BP神经网络模型。
newff()的具体调用格式如下:
net=newff(x,y,[h1,h2,…,hk],{f1,f2,…,fk})
其中,x为输入向量,y为输出(目标)向量。
[h1,h2,…,hk]是一个行向量,用以存储神经网络各层的节点数,该向量的大小等于神经网络隐层的层数。
{f1,f2,…,fk}为一个元胞数组,由若干个字符串构成,每个字符串对应于该层的传输函数类型。
当这些参数设定好后,就建立了一个神经网络数据对象net,它的一些重要属性在下表给出。
2、神经网络的训练和泛化
若建立了神经网络模型net,则可以调用train()函数对神经网络参数进行训练。
该函数的调用格式为:
[net,tr,y1,e]=train(net,x,y)
其中,变量x为
的矩阵,
为输入变量的维数,
为样本的组数,y为
的矩阵,
为输出变量的维数,x,y分别存储样本点的输入和输出数据。
由样本点数据进行训练,则可以得出训练后的神经网络对象net,且可以返回其它相关的内容,tr为结构体数据,返回训练的相关跟踪信息,tr.epochs为训练步数,tr.perf为各步目标函数的值。
y1和e矩阵分别返回由神经网络计算出的输出和误差矩阵。
在训练过程中将每隔25步自动显示一次训练指标。
训练结束后还可以用下面的语句绘制出目标值曲线:
plotperf(tr)
如果在给出的最大训练步数下无法得出满足要求的网络,则将给出错误的信息提示。
用户可以再调用该函数一次,这时将以上次的训练结果加权矩阵为初值继续训练,用户可以循环调用该语句。
如果误差在几次循环调用后仍无显著改善,则说明网络结构有问题,应该修改网络结构。
神经网络训练完成后,可以利用该网络对样本区域内的其他输入量求解其输出值,这种求值的方法称为神经网络的仿真或泛化(generalization),可以理解为利用神经网络进行数据拟合,对新的输入点数据x1调用sim()函数进行泛化,得出这些输入点处的输出矩阵y1,且
y1=sim(net,x1)
神经网络是否成功不在于对样本点本身拟合误差的大小,而关键在于其泛化效果。
如果对样本点以外的其他输入点均有较好的拟合效果,则说明该神经网络结构合理。
否则,训练出来的神经网络没有应用价值。
例:
产生一组数据:
x=-1 :
0.2 :
1 ;y=1./(1+25*x.^2) ;
x0=-1 :
0.1 :
1 ;y0=1./(1+25*x0.^2) ;
其中,x,y为训练数据,x1,y1为测试数据。
由数据可知,输入变量x为一维数据,取值范围分别为[-1,1]。
利用newff()函数建立BP神经网络。
设定其有2个隐层,第1隐层有5个节点,该层神经元采用tansig传输函数,第2隐层含1个节点,传输函数为tansig()函数,建立神经网络模型:
net=newff(x,y,5,{‘tansig’}) ;
net=train(net,x,y);%用x,y训练网络
y1=sim(net,x0);%调用sim()函数进行泛化
figure,plot(x,y,'o',x0,y0,x0,y1,':
');%从图形上看神经网络的泛化能力c
用神经网络对二元函数进行曲面拟合。
例:
[x,y]=meshgrid(-3:
.6:
3,-2:
.4:
2);x=x(:
)';y=y(:
)';%生成训练样本数据
z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);%注意x,y,z均应为行向量
net=newff([x;y],z);%二维输入,3个隐层
net.trainParam.epochs=1000;net.trainFcn='trainlm';%设定最大训练步数和训练算法
[net,b]=train(net,[x;y],z);%训练神经网络
[x2,y2]=meshgrid(-3:
.1:
3,-2:
.1:
2);x1=x2(:
)';y1=y2(:
)';%生成测试样本数据
figure;z1=sim(net,[x1;y1]);%求出测试样本数据的拟合输出值
z2=reshape(z1,size(x2));surf(x2,y2,z2)%画出拟合曲面
[x,y]=meshgrid(-3:
.6:
3,-2:
.4:
2);x=x(:
)';
y=y(:
)';
z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);
z=z(:
)';
net=newff([-33;-22],[10,10,1],{'tansig','tansig','tansig'});
net.trainParam.epochs=1000;net.trainFcn='trainlm';
net=train(net,[x;y],z);
[x2,y2]=meshgrid(-3:
.1:
3,-2:
.1:
2);x1=x2(:
)';y1=y2(:
)';
figure;z1=sim(net,[x1;y1]);
z2=reshape(z1,size(x2));surf(x2,y2,z2)
三、实验内容
1、神经网络对一元函数进行曲线拟合。
2、神经网络对二元函数进行曲面拟合。
3、神经网络在数据拟合具体实例上的应用。
四、实验报告
实验十二:
神经网络在数据拟合中的应用
实验名称:
实验日期:
年月日
姓名:
班级学号:
成绩:
一、实验目的
1、了解神经网络的基本知识。
2、学会用matlab神经网络工具箱进行数据拟合。
3、通过实例学习matlab神经网络工具箱的应用。
二、实验内容及步骤
1、已知数据:
x
0
.1
.2
.3
.4
.5
.6
.7
.8
.9
1
y
.3
.5
1
1.4
1.6
1.9
.6
.4
.8
1.5
2
利用神经网络在[0.1]区间上绘制出样本对应的函数曲线。
尝试不同的神经网络结构和训练算法,将神经网络的曲线拟合结果和实验十一的三次多项式拟合结果进行比较。
(1)利用神经网络算法拟合曲线。
程序:
x=0:
0.1:
1;
y=[0.30.511.41.61.90.60.40.81.52];
x0=0:
0.01:
1;
net=newff([0,1],[20,1],{'tansig','tansig'});
net.trainParam.epochs=1000;
net=train(net,x,y);
figure;
y0=sim(net,x0);
plot(x,y,'+',x0,y0,'o')
legend('原始数据','拟合数据')
运行结果:
(2)不同神经网络结构和训练算法的比较。
程序:
x=0:
0.1:
1;
y=[0.30.511.41.61.90.60.40.81.52];
x0=0:
0.01:
1;
net=newff([0,1],[30,1],{'tansig','tansig'});
net.trainParam.epochs=1500;
net.trainFcn='trainlm';
net=train(net,x,y);
figure;
y0=sim(net,x0);
plot(x,y,'+',x0,y0,'o')
legend('原始数据','拟合数据')
运行结果:
(3)与三次多项式拟合进行比较。
神经网络的曲线拟合结果远远不如实验十一的三次多项式拟合结果,因为数据个数本身就很有限,所以神经网络的拟合效果不好。
2、“人口问题”是我国最大社会问题之一,估计人口数量和发展趋势是我们制定一系列相关政策的基础。
有人口统计年鉴,可查的我国从1949年至1994年人口数据智料如下:
年份
1949
1954
1959
1964
1969
1974
1979
1984
1989
1994
人口数(百万)
541.67
602.66
672.09
704.99
806.71
908.59
975.42
1034.75
1106.76
1176.74
分析:
(1)在直角坐标系上作出人口数的图象。
(2)用神经网络方法拟合数据,并算出1999年人口数。
(1)
程序:
x=1949:
5:
1994;
y=[541.67602.66672.09704.99806.71908.59975.421034.751106.761176.74];
plot(x,y)
title('1949-1994年我国人口数图像')
运行结果:
(2)
程序:
x=1:
10;
y=[0.541670.602660.672090.704990.806710.908590.975421.034751.106761.17674];
x0=1:
0.01:
10;
net=newff([1,10],[50,1],{'tansig','tansig'});
net.trainParam.epochs=5000;
net.trainFcn='trainlm';
net=train(net,x,y);
figure;
y0=sim(net,x0);
plot(x,y,'+',x0,y0,'o')
legend('原始数据','拟合数据')
运行结果:
3、已知某处山区地形选点测量坐标数据为:
x=00.511.522.533.544.55
y=00.511.522.533.544.555.56
海拔高度数据为:
z=8990878592919693908782
9296989995918986848284
9698959290888584838185
8081828995969392898686
8285879899969788858283
8285899495939291868488
8892939495898786838192
9296979896939584828184
8585818280808185909395
8486819899989796958487
8081858283848790958688
8082818485868382818082
8788899899979698949287
实验十一第2题中已画出其原始地貌图,利用神经网络画出其加密后的地貌图。
加密后横坐标数据为50个,纵坐标数据为60个。
(1)程序:
[x,y]=meshgrid(0:
0.5:
5,0:
0.5:
6);
x=x(:
)';
y=y(:
)';
z=[8990878592919693908782
9296989995918986848284
9698959290888584838185
8081828995969392898686
8285879899969788858283
8285899495939291868488
8892939495898786838192
9296979896939584828184
8585818280808185909395
8486819899989796958487
8081858283848790958688
8082818485868382818082
8788899899979698949287];
z=z(:
)';
net=newff([05;06],[10,10,1],{'tansig','tansig','tansig'});
net.trainParam.epochs=1000;
net.trainFcn='trainlm';
net=train(net,[x;y],z);
[x2,y2]=meshgrid(0:
0.1:
5,0:
0.1:
6);
x1=x2(:
)';
y1=y2(:
)';
figure;
z1=sim(net,[x1;y1]);
z2=reshape(z1,size(x2));
surf(x2,y2,z2)
运行结果:
(本资料素材和资料部分来自网络,仅供参考。
请预览后才下载,期待您的好评与关注!
)