【计算智能实验】BP神经网络的Matlab实现

一、简述BP神经网络的学习算法:
二、应用MATLAB实现BP神经网络:
要求有程序和实验结果
实验1
设计一个BP神经网络对曲线拟合。已知输入向量为
P=-1:0.1:0.1
T=(-0.832 -0.423 -0.024 0.344 1.282
3.456 4.02 3.232 2.102 1.504 0.248 1.242 )
使用不同的传递函数和训练函数,对达到同一误差的训练次数进行对比

实验2
根据表1,设计一个BP神经网络,利用表1中后八列(作为输入样本)预测序号15的跳高成绩。
在这里插入图片描述

实验结果

实验1

(1)传递函数tansig,sinsig训练函数traingda
在这里插入图片描述
在这里插入图片描述
(2)传递函数tansig,sinsig训练函数trainlm
在这里插入图片描述
在这里插入图片描述
实验代码

P = -1:0.1:0.1;
T = [-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248 1.242 ];
net = newff( minmax(P), [5,1],{
    
    'tansig','purelin'},'traingd' );
net.trainParam.epochs = 7000;
net.performFcn = 'sse';
net.trainParam.goal = 0.02;
[net,tr] = train(net,P,T);
Y = sim(net,P);
 plot(P,T,P,Y,'o')

在这里插入图片描述
在这里插入图片描述

实验2

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以预测的结果为2.1253
实验代码

P=[3.2 3.2 3.0 3.2 3.2 3.4 3.2 3.0 3.2 3.2 3.2 3.9 3.1 3.2;
   9.6 10.3 9.0 10.3 10.1 10.0 9.6 9.0 9.6 9.2 9.5 9.0 9.5 9.7;
   3.45 3.75 3.5 3.65 3.5 3.4 3.55 3.5 3.55 3.5 3.4 3.1 3.6 3.45;
   2.15 2.2 2.2 2.2 2 2.15 2.1 2.1 2.1 2.1 2.15 2.0 2.1 2.15;
   140 120 140 150 80 130 130 100 130 140 115 80 90 130;
   2.8 3.4 3.5 2.8 1.5 3.2 3.5 1.8 3.5 2.5 2.8 2.2 2.7 4.6;
   11.0, 10.9 11.4 10.8 11.3 11.5 11.8 11.3 11.8 11.0 11.9 13.0 11.1 10.85;
   50 70 50 80 50 60 65 40 65 50 50 50 70 70];
T=[2.24 2.33 2.24 2.32 2.2 2.27 2.2 2.26 2.2 2.24 2.24 2.2 2.2 2.35];
%对P进行归一
[P_guiyi,PS1]=mapminmax(P,0,1)
%创建BP网络,每一个输入向量的取值为【-1,1】
net=newff([-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1;-1 1],[8,6,1],{
    
    'tansig','tansig','purelin'},'trainlm');
net.trainParam.epochs=15000;
net.trainParam.goal=0.01;
%设置学习速率
LP.lr=0.1;
net=train(net,P_guiyi,T);
%对第十五行的数据进行归一
p=[3.0;9.3;3.3;2.05;100;2.8;11.2;50];
[p_gui]=mapminmax(p,0,1);
t1=sim(net,p_gui)
%预测第15行的跳高成绩并进行反归一
T1_FANGUIYI=mapminmax('reverse',t1,PS1)

猜你喜欢

转载自blog.csdn.net/qq_44762986/article/details/112674672