当前位置:首页 > 例题实现_神经网络_第3章
例3.1 (P93) 代码
改进
《人工神经网络》第3章例题实现要点
设计单层感知器
P = [-0.5 -0.6 0.7; 0.8 0 0.1];
T = [1 1 0];
net = newp([-1 1; -1 1], 1);
handle = plotpc(net.iw{1}, net.b{1}); net.trainParam.epochs = 10; net = train(net, P, T);
Q = [0.6 0.9 -0.1; -0.1 -0.5 0.5]; Y = sim(net, Q); figure;
plotpv(Q, Y);
handle = plotpc(net.iw{1}, net.b{1}, handle)
P = [-0.5 -0.6 0.7; 0.8 0 0.1];
T = [1 1 0];
net = newp([-1 1; -1 1], 1);
net = train(net, P, T); %创建感知器 figure;
plotpc(net.iw{1}, net.b{1}); %感知器的线性分类 Q = [0.6 0.9 -0.1; -0.1 -0.5 0.5];
Y = sim(net, Q); %应用感知器分类 hold on;
plotpv(Q, Y); %应用感知器分类的图示
例 (P113) 单隐层BP网络设计 (运行与教材有差异) 代码 P = -1: 0.1: 1;
T = [-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 0.0988 0.3072 0.3960 0.3449 0.1816 -0.0312 -0.2189 -0.3201];
s = 3:10; %与表3-2对应,增加9和10 res = 1:8; %原为1:6 for i = 1:8 %原为1:6
net = newff(minmax(P), [s(i),1],{'tansig', 'logsig'},'traingdx'); %应改为trainlm net.trainParam.epochs = 2000; %训练时间太长 net.trainParam.goal = 0.001; net = train(net, P, T); y = sim(net, P); error = y-T;
res(i) = norm(error); end
例 (P121) RBF网络地下水位预测
代码 P = [ 0.0177 0.0230 0.0619 0.2212 0.0796 0.1504 0.1681 0.1504 0.1150 0.1593 0.0885 0.2035 0 1.0000 0.6106 0.6814 0.3982 0.1858 0.0708;...
0 0 0.2424 0.6061 0.8182 0.9697 1.0000 0.9394 0.7576 0.5606 0.3030 0.3182 0.3333 0.9697 0.8788 0.6970 0.4848 0.3333 0.0909;... 0.0200 0.1000 0.1500 0.4000 0.8000 0.9000 0.7000 0.5000 0.4000 0.4000 0.5200 0.3500 0.1000 0.4500 0.4000 0.4000 0.2000 0.1000 0 ;... 0.0054 0.0054 0.0323 0.1613 0.0968 0.6075 0.1559 0.3978 0.1129 0.0806 0.0753 0.0591 0.0054 1.0000 0.6129 0.3226 0.1882 0.0215 0.0323;... 0.0580 0 0.2319 0.5217 0.7971 0.8406 0.6957 0.5507 0.2174 0.3913 0.2319 0 0.0290 0.6812 0.5507 0.4058 0.2609 0.1304 0.0290 ] T = [ 0.6725 0.6943 0.6376 0.4891 0.1616 0.0699 0.1092 0.1048 0.2533 0.4017 0.6201 0.6638 0.5764 0.0437 0 0.0568 0.2009 0.4105 0.5153 ] P_test = [ 0.0442 0.1150 0.1681 0.0708 0.1327;... 0.0909 0.3030 0.6061 0.8485 0.9545;... 0.1500 0.2000 0.6000 0.9000 1.0000;... 0.0108 0.0215 0 0.1022 0.4355;... 0.0725 0.4783 0.3478 0.8261 1.0000 ] SPREAD = 1.5;
net = newrbe(P, T, SPREAD); y = sim(net, P_test)
例 (P123) 基于RBF网络的非线性滤波
代码 P = [-1:0.1:1];
T = [-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 0.0988 0.3072 0.3960 0.3449 0.1816 -0.0312 -0.2189 -0.3201]; %创建5个RBF网络 for i = 1:5
net = newrbe(P,T,i/12); y(i,:) = sim(net, P); end
%绘制误差曲线 plot(1:21,y(1,:)-T); hold on;
plot(1:21,y(2,:)-T, '+'); hold on;
plot(1:21,y(3,:)-T, '.'); hold on;
plot(1:21,y(4,:)-T, 'r--'); hold on;
plot(1:21,y(5,:)-T, 'g-.'); hold off;
%原扩展速度太快
共分享92篇相关文档