zl程序教程

您现在的位置是:首页 >  后端

当前栏目

数学建模学习笔记(十三)神经网络——中:matlab程序实现

MATLAB建模笔记学习神经网络 数学 十三 程序实现
2023-09-14 09:01:37 时间

BP神经网络训练函数:
在这里插入图片描述
BP网络构建:
1、生成BP网络

net=newff(PR,[S1 S2...SNl]),{TF1 TF2...TFNl},BTF)

PR:由R维的输入样本最小最大值构成的R*2维矩阵
[S1 S2…SNl]各层的神经元个数
{TF1 TF2…TFNl}各层的神经元传递函数
BTF训练用函数的名称
2、网络训练

 net=train(net,P,T)

3、网络仿真

Y2=sim(net,P2)

matlab程序示例:

clear;
clc;
X=-1:0.1:1;
D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...
    0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988...
    0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201];
figure;
plot(X,D,'*'); %绘制原始数据分布图(附录:1-1)
net = newff(minmax(X),[5 1],{'tansig','tansig'});
net.trainParam.epochs = 100; %训练的最大次数
net.trainParam.goal = 0.005; %全局最小误差
net = train(net,X,D); 
O = sim(net,X); 
figure; 
plot(X,D,X,O,'r'); %绘制训练后得到的结果和误差曲线
V = net.iw{1,1}%输入层到中间层权值
theta1 = net.b{1}%中间层各神经元阈值
W = net.lw{2,1}%中间层到输出层权值
theta2 = net.b{2}%输出层各神经元阈值

程序运行结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
程序解读:
figure %用于创建程序窗口

net = newff(minmax(X),[5 1],{‘tansig’,‘tansig’});
生成BP网络
minmax返回数组中每一行的最小值和最大值
运行
X=-1:0.1:1;
minmax(X)
返回-1,1
[5 1]:两层神经元个数为5,1
tansig:即tansig函数,两层均用此函数训练
在这里插入图片描述
net = train(net,X,D):X自变量,D因变量

O = sim(net,X):预测(仿真)函数,O即X对应的因变量

训练窗口的注解:
epoch:其代表着迭代次数
time:训练的时间
validation checks:与performance和gradient同为停止条件之一。意思是若连续几次训练performance和gradient的效果不再提高则视为训练完成。但是通过performance和gradient停止意味着该神经网络达到了我们的预期,而通过validation checks停止则意味着该神经网络没有达到了我们的预期。

训练图注解:
Performance’按钮可以显示训练结果示意图
Training State’可以得到神经网络训练参数的变化过程示意图
Regression‘得到拟合结果,R越接近1拟合效果越好