文档详情

BP神经网络实验报告.doc

发布:2025-05-23约1.33千字共6页下载文档
文本预览下载声明

智能控制实验报告

学院:电气工程学院

班级:电气F1104

姓名:姜冲

学号:201123910909

老师:石庆升

时间:2014.11.10

BP神经网络设计

一、实验目的

1.初步熟悉MATLAB工作环境,熟悉命令窗口。

2.学习并了解BP神经网络的结构及学习算法。

二、实验设备

1.计算机

2.Matlab软件

三、实验内容和步骤

要求设计一个简单的BP网络,实现对非线性函数的逼近,通过改变该函数的参数以及BP网络隐层神经元的数目,来观察训练时间以及训练误差的变化情况。

1.将要逼近的非线性函数设为正弦函数

k=1;

p=[-1:.05:1];

t=sin(k*pi*p);

plot(p,t,-)

title(要逼近的非线性函数);

xlabel(时间);

ylabel(非线性函数);

仿真结果如图1

图1

2.网络建立

应用函数newff()建立BP网络结构,为二层BP网络。隐层神经元数目n可以改变,暂设为10,输出层有一个神经元。选择隐层和输出层神经元传递函数分别为tansig函数和purelin函数,网络训练算法采用trainlm

n=10;

net=newff(minmax(p),[n,1],{tansigpurelin},trainlm);

%对于该初始网络,可以应用sim()函数观察网络输出

y1=sim(net,p);

%同时绘制网络输出曲线,并与原函数相比拟

figure;

plot(p,t,-,p,y1,--)

title(未训练网络的输出结果);

xlabel(时间);

ylabel(仿真输出--原函数-);

仿真结果如图2,因为使用newff()函数建立网络时,权值和阈值的初始化是随机的,所以网络输出的结果很差,根本达不到函数逼近的目的,并且每次运行结果也有所不同。

图2

3.网络训练

应用函数train()对网络进行训练之前,要先设置训练参数。将训练时间设置为50,精度设置为0.01,其余用缺省值。

训练后得到的误差变化过程如图:

net.trainParam.epochs=50;

net.trainParam.goal=0.01;

net=train(net,p,t);

仿真结果如图3,图4

图3

图4

4.网络测试

对于训练好的网络进行仿真

并绘制网络输出曲线,与原始非线性函数曲线以及未训练网络的输出结果曲线相比拟

net.trainParam.epochs=50;

net.trainParam.goal=0.01;

net=train(net,p,t);

y2=sim(net,p);

figure;

plot(p,t,-,p,y1,--,p,y2,-.)

title(训练后网络的输出结果);

xlabel(时间);

ylabel(仿真输出);

仿真结果如图5,从图中可以看出,得到的曲线和原始的非线性函数曲线很接近。这说明经过训练后,BP网络对非线性函数的逼近效果相当好。

图5

四、实验总结

显示全部
相似文档