MATLAB神经网络笔记
keywords: 单层感知器 误差曲面图 BP神经网络拟合曲线
- 设计一个单层感知器网络,对给定样本输入向量P = (−0.5−0.20.10.2; 0.70.60.40.8)、 目标向量T = (1 1 0 0)以及需要进行分类的输入向量组P = (−0.70.3−0.60.1; 0.50.4−0.30.6)进 行分类。
P=[-0.5 -0.2 0.1 0.2; 0.7 0.6 0.4 0.8];
T=[1 1 0 0];
P_test=[-0.7 0.3 -0.6 0.1;0.5 0.4 -0.3 0.6];
plotpv(P,T);#散点图
net=newp(minmax§,1);
Y = sim(net,P);
net.trainParam.epochs=20;
net = train(net,P,T);
plotpc(net.iw{1},net.b{1})#分类线
Y=sim(net,P_test)#预测
Y =
1 0 1 0
散点图
6次循环后收敛
分类线
2. 一线性神经网络的输入为P = (1.1 − 1.3),目标为T = (0.61),训练次数为500次,学 习速率为0.01,用Matlab编程实现,并画出误差曲面图。
clear all;
P=[1.1 -1.3];
T=[-0.6 1];
net= newlin(minmax§,1,0,0.01);
net=init(net);
net.trainParam.epochs= 500;
net = train(net,P,T);
A=sim(net,P);
A
A =
-0.6000 1.0000
E=T-A
E =
1.0e-06 *
-0.6827 0.0415
SSE=sumsqr(E)
SSE =
4.6781e-13
SSE
SSE =
4.6781e-13
wrange= -1:0.1:1;
brange = -1 :0.1:1;
ES=errsurf(P,T,wrange,brange,‘purelin’);
plotes(wrange,brange,ES);
plotep(net.iw{1,1},net.b{1},SSE);
net.iw{1,1}
3. 设计一个BP神经网络对曲线拟合。已知输入向量为P = (−1 − 0.9 − 0.8 − 0.7 − 0.6−0.5−0.4−0.3−0.2−0.100.10.20.30.40.50.60.70.80.9);输出向量为T = (−0.832−0.423− 0.0240.3441.2823.4564.023.2322.1021.5040.2481.2422.3443.2622.0521.6841.0222.2243.0221.984)。 试用不同的传递函数及训练函数,对达到同一训练目标误差的训练次数进行对比。
P=[-1 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9];
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.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];
net = newff(minmax§,[10,1],{‘tansig’ ‘purelin’},‘trainlm’);
net.trainParam.epochs = 200;
net.trainParam.goal = 1e-8;
net.trainParam.min_grad= 1e-20;
net.trainParam.show=200;
net.trainParam.time=inf;
net=train(net,P,T);
P_test=-1:0.1:1;
X=sim(net,P_test);
plot(P_test,X,‘bo’);
hold on
plot(P,T,‘r+’);
title(’+为真实数,o为预测值’)
换一个传递函数 logsig
需要60次迭代后收敛
net = newff(minmax§,[10,1],{‘logsig’ ‘purelin’},‘trainlm’);
net = train(net,P,T);