基于MATLAB的BP神经网络实现非线性函数拟合设计
一、实验要求:
重点是掌握BP神经网络的学习算法原理,掌握matlab工具箱设计BP神经网络拟合非线性模型的方法(m文件);掌握在图形用户界面下设计BP神经网络拟合非线性模型的方法。
设计前馈型网络,在区间[-4,4]上逼近函数
。
参考参数设置:
1.1 输入变量和目标输出:
indata=-4:0.1:4;
targetdata=0.35*(1-indata+2*indata.*indata).*exp(-indata.*indata/2) ;
1.2 网络结构
3层BP网络,隐层10个神经元,隐层和输出层激发函数为正切S型传递函数。训练函数为:trainlm。
二、实验内容
2.1掌握matlab工具箱设计BP神经网络拟合非线性模型的方法(m文件)
newff:前馈网络创建函数
语法:
net = newff(A,B,{C},’trainFun’,’BLF’,’PF’)。
A:一个n*2的矩阵,第i行元素为输入信号Xi的最大最小值
B:一个K维行向量,其元素为网络中各个节点的数量。
C:一个K维字符串行向量,每一个分量为对应层的神经元的激活函数,默认为“tansig”
trainFun:为学习规则的采用的训练算法。默认为:“trainlm”
BLF:BP权值/偏差学习函数。默认为:“learngdm”
PF:性能函数,默认为“mse”
train函数
语法:
即网络学习函数:
[net,tr,YI,E] = train(net,X,Y)
X:网络实际输入
Y:网络应有输出
tr:网络跟踪信息
YI:网络实际输出
E:误差矩阵
sim函数
**语法:**Y = sim(net,X)
X:输入给网络的K*N矩阵,K为网络输入个数,N为样本数据量
Y:输出矩阵Q*N,其中Q为网络输出个数
2.1.1 实验代码:
indata=-4:0.1:4;
targetdata=0.35*(1-indata+2*indata.*indata).*exp(-indata.*indata/2);
net = newff([-4,4],[10,1],{'tansig','tansig'});
net.trainParam.epochs = 500; *%训练的最大次数*
net.trainParam.goal = 0.0000001; *%全局最小误差*
net = train(net,indata,targetdata);
O = sim(net,indata);
plot(indata,O,'*')
2.1.2 实验结果:
2.2 掌握在图形用户界面下设计BP神经网络拟合非线性模型的方法
2.2.1 设置输入输出量
打开matlab在命令行输入:nntool
点击import按钮,添加输入变量和目标输出变量,按import按钮,导入输入 变量,点击ok确定;按import按钮,导入目标输出变量,点击ok确定。
2.2.2 设置网络结构
在首页窗口按 new按钮, 新建网络
设置好参数后,按create 按钮创建网络
双击network1
2.3 训练结果