神经网络设计及MATLAB仿真实验.docx
《神经网络设计及MATLAB仿真实验.docx》由会员分享,可在线阅读,更多相关《神经网络设计及MATLAB仿真实验.docx(10页珍藏版)》请在冰豆网上搜索。
![神经网络设计及MATLAB仿真实验.docx](https://file1.bdocx.com/fileroot1/2023-2/2/b138a4df-7cd8-4543-ab06-efd5e2581c2f/b138a4df-7cd8-4543-ab06-efd5e2581c2f1.gif)
神经网络设计及MATLAB仿真实验
昆明理工大学信息工程与自动化学院学生实验报告
(20—20学年第学期)
课程名称:
智能控制导论开课实验室:
自动化系机房2013年5月29日
年级、专业、班
20101级测控101班
学号
姓名
成绩
实验项目名称
模糊控制系统设计及MATLAB仿真研究
指导教师
教师评语
教师签名:
年月日
一、实验目的
通过上机实习,熟悉MATLAB的基本操作命令和神经网络工具箱的使用,掌握MATLAB编程或神经网络编辑器等方法,进行BP神经网络设计的基本方法和步骤,为以后利用计算机进行神经网络控制系统分析与设计打下良好的基础。
二、实验内容
试设计BP神经网络来实现正弦函数的逼近。
输入矢量X=-1:
0.1:
1;
相对应的目标矢量
三、所用仪器、材料(设备名称、型号、规格等)
装有MATLAB的电脑或者个人计算机
四、实验方法、步骤
1、方法一:
MATLAB程序仿真实现(本次试验采用方法一)
2、方法二:
神经网络工具箱实现
五、实验过程原始记录(数据、图表、计算等)
1、利用两层BP网络完成函数逼近,隐含层激活函数为S型函数,输出层的激活函数为线性函数
(程序)clearall;
clc;
NNTWARNOFF;
X=-1:
0.05:
1;
T=sin(pi*X);
plot(X,T,'+b');
pause
2、建立BP网络,并初始化权值和阈值
(程序)[R,N]=size(X);
[S2,N]=size(T);
S1=5;
[w11,b11,w12,b12]=initff(X,S1,'tansig',S2,'purelin');
[y1,y21]=simuff(X,w11,b11,'tansig',w12,b12,'purelin');
(训练前BP网络的函数逼近效果)
3、利用不含噪声的理想输入数据训练网络
(程序)disp_freq=5;
max_epoch=1000;%训练次数
err_goal=0.02;%训练误差
lr=0.01;%学习速率
tp=[disp_freqmax_epocherr_goallr];
[w21,b21,w22,b22,te,tr]=trainbpx(w11,b11,'tansig',w12,b12,'purelin',X,T,tp);
(BP网络训练过程参数显示)
TRAINBPX:
0/1000epochs,lr=0.01,SSE=122.631.
TRAINBPX:
5/1000epochs,lr=0.00567236,SSE=11.7777.
TRAINBPX:
10/1000epochs,lr=0.00723953,SSE=9.15102.
TRAINBPX:
15/1000epochs,lr=0.00923968,SSE=6.89626.
TRAINBPX:
20/1000epochs,lr=0.0117924,SSE=4.92212.
TRAINBPX:
25/1000epochs,lr=0.0150505,SSE=3.47479.
TRAINBPX:
30/1000epochs,lr=0.0192086,SSE=2.43021.
TRAINBPX:
35/1000epochs,lr=0.0245156,SSE=1.77321.
TRAINBPX:
40/1000epochs,lr=0.0312888,SSE=1.41395.
TRAINBPX:
45/1000epochs,lr=0.0399334,SSE=1.23208.
TRAINBPX:
50/1000epochs,lr=0.0509662,SSE=1.13685.
TRAINBPX:
55/1000epochs,lr=0.0650472,SSE=1.03322.
TRAINBPX:
60/1000epochs,lr=0.0830186,SSE=0.860574.
TRAINBPX:
65/1000epochs,lr=0.105955,SSE=0.651445.
TRAINBPX:
70/1000epochs,lr=0.135229,SSE=0.435468.
TRAINBPX:
75/1000epochs,lr=0.17259,SSE=0.232097.
TRAINBPX:
80/1000epochs,lr=0.220273,SSE=0.0919917.
TRAINBPX:
85/1000epochs,lr=0.28113,SSE=0.0244567.
TRAINBPX:
86/1000epochs,lr=0.295187,SSE=0.0177537
plot(X,y21,'--g',X,y22,'or')
disp('网络训练步数为:
')
te
pause
figure
(2);%网络训练记录tr(1,:
)为训练误差,tr(2,:
)为训练过程中的学习速率
plottr(tr)
网络训练步数为:
te=
86
(BP网络训练过程的误差及学习速率变化曲线)
(训练后BP网络的函数逼近效果)
4、检验训练后BP网络的泛化能力
(程序)x1=[-0.24,-0.55,0,0.15,0.43,0.76,0.98];
y2=simuff(x1,w21,b21,'tansig',w22,b22,'purelin');
figure(3);
plot(X,T,x1,y2,'cs')
(所得曲线)
六、实验结果、分析和结论(误差分析与数据处理、成果总结等)
实验结果如上检验训练后BP网络的泛化能力所的图像,本次试验中,前面的步骤一直很顺利,到最后一步走了好多曲折:
1)首先是输入的程序不对,导致图形覆盖在BP网络训练过程的误差及学习速率变化曲线上:
(程序)x1=[-0.24,-0.55,0,0.15,0.43,0.76,0.98];
y2=simuff(x1,w21,b21,'tansig',w22,b22,'purelin');
plot(x1,y2,'cs')
比起上面的程序,少了一个figure(3);语句
(所得曲线)
2)经过上一步的失败,加上figure(3);语句后,出现了一个单独的曲线,但是只有泛化,没有与期望相比较,因而不能看出泛化能力。
(程序)x1=[-0.24,-0.55,0,0.15,0.43,0.76,0.98];
y2=simuff(x1,w21,b21,'tansig',w22,b22,'purelin');
figure(3);
plot(x1,y2,'cs')
(所得曲线)
3)后来经过老师指导后,在泛化结果基础上加上了原有期望,就能很好的看出泛化能力了。
(程序)x1=[-0.24,-0.55,0,0.15,0.43,0.76,0.98];
y2=simuff(x1,w21,b21,'tansig',w22,b22,'purelin');
figure(3);
plot(X,T,x1,y2,'cs')
(所得曲线)
实验总结:
通过本次试验,我对BP神经网络的了解更加深入,它是一个多层网络(输入层、隐含层、输出层),层与层之间采用互连方式,同层之间不连接,并且隐含层是S函数的一个网络。
BP网络具有很好的逼近非线性映射的能力,在模式识别、图像处理、系统辨识、函数模拟、优化计算、最优预测和自适应控制领域有着较为广泛的应用。