wu.docx
- 文档编号:24042015
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:21
- 大小:50.66KB
wu.docx
《wu.docx》由会员分享,可在线阅读,更多相关《wu.docx(21页珍藏版)》请在冰豆网上搜索。
wu
1设计感知器网络,编写MATLAB程序,按照例2.1对如下的输入、输出样本进行分类,并画输入矢量位置图、感知器训练过程记录图。
输入矢量:
目标矢量:
T=[0101].
解:
训练程序以及作图程序编写如下:
P=[21-21;2-221];T=[0101];
[R,Q]=size(P);
[S,Q]=size(T);
net=newp(minmax(P),S);%建立一个感知器网络
[W0,B0]=rands(S,R);
net.iw{1,1}=W0;
net.b{1}=B0;
A=sim(net,P)
net.trainParam.epochs=20;%定义最大循环次数
net=train(net,P,T);
%绘制训练后的分类结果
V=[-33-33];%取一数组限制坐标数值大小
plotpv(P,T,V);
pause%在输入矢量空间绘画输入矢量和目标矢量的位置
axis('equal'),%令横坐标和纵坐标等距离长度
title('InputVectorGraph'),%写图标题
xlabel('p1'),%写横轴标题
ylabel('p2'),%写纵轴标题
plotpc(net.iw{1,1},net.b{1});%绘制由W和B在输入平面中形成的最终分类线
运行此程序,可得结果为:
A=
1101
TRAINC,Epoch0/20
TRAINC,Epoch6/20
TRAINC,Performancegoalmet.
得到的图形如下图所示:
2设计竞争网络,编写MATLAB程序,按照例6.4对下列模式进行分类辨识,并画出竞争前的权矢量位置图和竞争后的权矢量位置图。
P=[0.80.17360.7070.3420.6;
0.6-0.98480.707-0.93970.8];
S=4;
[R,Q]=size(P);
net=newc(minmax(P),S);%创建竞争网络
net.iw{1,1}=randnr(S,2);%赋归一化后的权值
w1=net.iw{1,1}%输出权值
b1=w1';
x=0:
0.1:
3.1416*2;
plot(sin(x),cos(x));%画圆
axis('equal')
xlabel('P(1,q)..+W(i,1)..o')
ylabel('P(2,q)W(i,2)')
holdon
plot(P(1,:
),P(2,:
),'r+')%画输入状态点
plot(b1(1,:
),b1(2,:
),'o')%画初始权值点
fori=1:
Q
plot([P(1,i)0],[P(2,i)0])%画输入点和原点的连线
end
holdoff
pause
net.trainParam.epochs=320;%最大训练次数
net.trainParam.show=100;%显示间隔
lp.lr=0.05;
net=train(net,P);%训练竞争网络
w2=net.iw{1,1}%输出训练后的权值
b2=w2';
A=zeros(4,Q)+compet(net.iw{1,1}*P)%输出训练后的结果
x=0:
0.1:
3.1416*2;
figure
(2)
plot(sin(x),cos(x));
axis('equal')
xlabel('P(1,q)..+W(i,1)..o')
ylabel('P(2,q)W(i,2)')
holdon
plot(P(1,:
),P(2,:
),'r+')
plot(b2(1,:
),b2(2,:
),'o')%作训练后的权值点
fori=1:
Q
plot([P(1,i)0],[P(2,i)0])
end
holdoff
运行结果如下:
w1=
0.5692-0.8222
0.9775-0.2112
-0.2033-0.9791
0.3797-0.9251
TRAINR,Epoch0/320
TRAINR,Epoch100/320
TRAINR,Epoch200/320
TRAINR,Epoch300/320
TRAINR,Epoch320/320
TRAINR,Maximumepochreached.
w2=
0.63130.7489
0.77930.6156
0.2012-0.9582
0.4649-0.3585
A=
00001
10100
01010
00000
3、设计BP网络,编写MATLAB程序,描绘函数
及函数
的图形。
给出每个图形的初始网络输出图、训练结束后的网络输出图及误差变化图。
MATLAB程序:
P1=-1:
0.1:
1;%训练样本,每一列为一个样本
T1=P1.^2+P1.*3+1;%训练目标
plot(P1,T1);
P2=-1:
0.1:
1;%测试样本,每一列为一个样本
T2=P1.^2+P1.*3+1;%测试目标
%归一化
[PN1,minp,maxp,TN1,mint,maxt]=premnmx(P1,T1);
PN2=tramnmx(P2,minp,maxp);
TN2=tramnmx(T2,mint,maxt);
%设置网络参数
NodeNum=20;%隐层节点数
TypeNum=1;%输出维数
TF1='tansig';TF2='purelin';%判别函数(缺省值)
net=newff(minmax(PN1),[NodeNumTypeNum],{TF1TF2});
net.trainFcn='trainlm';%Levenberg-Marquardt算法,内存需求最大,收敛速度最快
net.trainParam.show=20;%训练显示间隔
net.trainParam.lr=0.3;%学习步长-traingd,traingdm
net.trainParam.mc=0.95;%动量项系数-traingdm,traingdx
net.trainParam.mem_reduc=1;%分块计算Hessian矩阵(仅对Levenberg-Marquardt算法有效)
net.trainParam.epochs=1000;%最大训练次数
net.trainParam.goal=1e-8;%最小均方误差
net.trainParam.min_grad=1e-20;%最小梯度
net.trainParam.time=inf;%最大训练时间
net=train(net,PN1,TN1);%训练
YN1=sim(net,PN1);%训练样本实际输出
pause
YN2=sim(net,PN2);%测试样本实际输出
pause
MSE1=mean((TN1-YN1).^2)%训练均方误差
MSE2=mean((TN2-YN2).^2)%测试均方误差
Y2=postmnmx(YN2,mint,maxt);
plot(1:
length(T2),T2,'r+:
',1:
length(Y2),Y2,'bo:
')
title('+为真实值,o为预测值')
输出结果如下:
TRAINLM,Epoch0/1000,MSE11.4658/1e-008,Gradient191.492/1e-020
TRAINLM,Epoch5/1000,MSE6.91834e-010/1e-008,Gradient0.000360988/1e-020
TRAINLM,Performancegoalmet.
MSE1=
6.9183e-010
MSE2=
6.9183e-010
初始网络输出图:
训练结束后的网络输出图:
误差变化图:
4、按照7.3节给出的字母识别的例子,设计神经网络,编写MATLAB程序,对0,1,2,…,9十个数字进行识别。
%prodat.m调用的数字产生程序
function[alphabet,targets]=prodat()
letter0=[00100...
01010...
01010...
10001...
11111...
10001...
10001]';
letter1=[11110...
10001...
10001...
11110...
10001...
10001...
11110]';
letter2=[01110...
10001...
10000...
10000...
10000...
10001...
01110]';
letter3=[11110...
10001...
10001...
10001...
10001...
10001...
11110]';
letter4=[11111...
10000...
10000...
11110...
10000...
10000...
11111]';
letter5=[11111...
10000...
10000...
11110...
10000...
10000...
10000]';
letter6=[01110...
10001...
10000...
10000...
10011...
10001...
01110]';
letter7=[10001...
10001...
10001...
11111...
10001...
10001...
10001]';
letter8=[01110...
00100...
00100...
00100...
00100...
00100...
01110]';
letter9=[11111...
00100...
00100...
00100...
00100...
10100...
01000]';
alphabet=[letter0,letter1,letter2,letter3,letter4,letter5,letter6,letter7,letter8,letter9];
targets=eye(10);
%charecg.m
[alphabet,targets]=prodat;
P=alphabet;%alphabet=[letter0,letter1,...,letter9];
T=targets;%targets=eye(10);
[R,Q]=size(P);
S1=10;
[S2,Q]=size(T);
net=newff(minmax(alphabet),[S1S2],{'logsig''logsig'},'traingdx');
net.LW{2,1}=net.LW{2,1}*0.01;
net.b{2}=net.b{2}*0.01;
%无噪声字母识别网络的训练
net.performFcn='sse';%执行函数为误差平方和函数
net.trainParam.epochs=800;%最大训练步长
net.trainParam.lr=0.01;%学习率
net.trainParam.lr_inc=1.05;%增长的学习率
net.trainParam.lr_dec=0.7;
net.trainParam.goal=0.1;%执行函数目标值
net.trainParam.mc=0.9;%附加动量因子
net.trainParam.min_grad=1e-10;%最小执行梯度
net.trainParam.show=50;
P=alphabet;
T=targets;
[net,tr]=train(net,P,T);
pause%按任意键继续
%具有噪声的输入矢量识别网络的训练
netn=net;
netn.trainParam.goal=0.1;%目标误差.
netn.trainParam.epochs=300;%最大训练步长.
forpass=1:
10
fprintf('Pass=%.0f\n',pass);
T=[targetstargetstargetstargets];
P=[alphabet,alphabet,...
(alphabet+randn(R,Q)*0.1),...
(alphabet+randn(R,Q)*0.2)];
[netn,tr]=train(netn,P,T);
end
pause%按任意键继续
%再次用无噪声字母训练识别网络
netn.trainParam.goal=0.1;%均方误差目标.
netn.trainParam.epochs=500;%最大训练步长
net.trainParam.show=5;%训练中显示的频率
P=alphabet;
T=targets;
[netn,tr]=train(netn,P,T);
pause%按任意键测试所训练的网络性能
%测试所训练的网络性能
%====================
noise_range=0:
.02:
0.2;
max_test=100;
network1=[];
network2=[];
T=targets;
%PERFORMTHETEST
fornoiselevel=noise_range
fprintf('Testingnetworkswithnoiselevelof%.2f.\n',noiselevel);
errors1=0;
errors2=0;
fori=1:
max_test
P=alphabet+randn(35,10)*noiselevel;
%TESTNETWORK1
A=sim(net,P);
AA=compet(A);
errors1=errors1+sum(sum(abs(AA-T)))/2;
%TESTNETWORK2
An=sim(netn,P);
AAn=compet(An);
errors2=errors2+sum(sum(abs(AAn-T)))/2;
echooff
end
%100组10个矢量的平均误差
network1=[network1errors1/10/100];
network2=[network2errors2/10/100];
end
echoon
pause%按任意键显示结果
%显示结果
%========
clf
plot(noise_range,network1*100,'--',noise_range,network2*100);
grid
xlabel('NoiseLevel');
ylabel('PercentageofRecognition');
echooff
运行结果如下:
**WarninginINIT
**Network"input{1}.range"hasarowwithequalminandmaxvalues.
**Constantinputsdonotprovideusefulinformation.
TRAINGDX,Epoch0/800,SSE24.8297/0.1,Gradient12.4963/1e-010
TRAINGDX,Epoch50/800,SSE8.04874/0.1,Gradient0.821878/1e-010
TRAINGDX,Epoch100/800,SSE2.00839/0.1,Gradient0.395636/1e-010
TRAINGDX,Epoch131/800,SSE0.092023/0.1,Gradient0.0310406/1e-010
TRAINGDX,Performancegoalmet.
Pass=1
TRAINGDX,Epoch0/300,SSE1.02328/0.1,Gradient2.19299/1e-010
TRAINGDX,Epoch50/300,SSE0.519801/0.1,Gradient0.233209/1e-010
TRAINGDX,Epoch100/300,SSE0.222298/0.1,Gradient0.0777266/1e-010
TRAINGDX,Epoch122/300,SSE0.0996078/0.1,Gradient0.035453/1e-010
TRAINGDX,Performancegoalmet.
Pass=2
TRAINGDX,Epoch0/300,SSE0.173233/0.1,Gradient0.203137/1e-010
TRAINGDX,Epoch50/300,SSE0.145321/0.1,Gradient0.087175/1e-010
TRAINGDX,Epoch96/300,SSE0.0998803/0.1,Gradient0.0415394/1e-010
TRAINGDX,Performancegoalmet.
Pass=3
TRAINGDX,Epoch0/300,SSE0.147319/0.1,Gradient0.23144/1e-010
TRAINGDX,Epoch50/300,SSE0.120469/0.1,Gradient0.077796/1e-010
TRAINGDX,Epoch80/300,SSE0.0993568/0.1,Gradient0.0490604/1e-010
TRAINGDX,Performancegoalmet.
Pass=4
TRAINGDX,Epoch0/300,SSE0.376671/0.1,Gradient1.13927/1e-010
TRAINGDX,Epoch50/300,SSE0.159792/0.1,Gradient0.125308/1e-010
TRAINGDX,Epoch94/300,SSE0.0996958/0.1,Gradient0.0442918/1e-010
TRAINGDX,Performancegoalmet.
Pass=5
TRAINGDX,Epoch0/300,SSE0.308088/0.1,Gradient1.14866/1e-010
TRAINGDX,Epoch50/300,SSE0.102797/0.1,Gradient0.0869278/1e-010
TRAINGDX,Epoch54/300,SSE0.0999377/0.1,Gradient0.0769848/1e-010
TRAINGDX,Performancegoalmet.
Pass=6
TRAINGDX,Epoch0/300,SSE0.123875/0.1,Gradient0.263525/1e-010
TRAINGDX,Epoch32/300,SSE0.0996842/0.1,Gradient0.149902/1e-010
TRAINGDX,Performancegoalmet.
Pass=7
TRAINGDX,Epoch0/300,SSE0.120525/0.1,Gradient0.402932/1e-010
TRAINGDX,Epoch16/300,SSE0.0993447/0.1,Gradient0.23728/1e-010
TRAINGDX,Performancegoalmet.
Pass=8
TRAINGDX,Epoch0/300,SSE0.160647/0.1,Gradient0.501139/1e-010
TRAINGDX,Epoch37/300,SSE0.0994329/0.1,Gradient0.123465/1e-010
TRAINGDX,Performancegoalmet.
Pass=9
TRAINGDX,Epoch0/300,SSE0.569175/0.1,Gradient2.57585/1e-010
TRAINGDX,Epoch48/300,SSE0.0997715/0.1,Gradient0.0894854/1e-010
TRAINGDX,Performancegoalmet.
Pass=10
TRAINGDX,Epoch0/300,SSE0.363586/0.1,Gradient0.766982/1e-010
TRAINGDX,Epoch50/300,SSE0.158702/0.1,Gradient0.162026/1e-010
TRAINGDX,Epoch79/300,SSE0.0999212/0.1,Gradient0.0639816/1e-010
TRAINGDX,Performancegoalmet.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- wu