经过一番学习之后,下面是本人用matlab7.1写的。其中有很多不理解的地方,请指正。另外,我想用plotchar()来画出4*4的图像,但只能画出5*7的,不知何解??或用什么来画呢??怎样通过竞争层后输出也没搞懂??估计是没人回答了!!程序见符件~
alphabet=[1 -1 1;1 1 1;1 -1 1;1 -1 1;1 -1 1;-1 1 -1;-1 -1 -1;1 -1 1; 1 -1 1;1 1 -1;1 -1 -1;1 -1 1;1 -1 1;-1 1 1;-1 -1 1;1 -1 1] targets=[1 -1 -1;-1 1 1;-1 -1 1] [R Q]=size(alphabet); P=alphabet; net = newff(minmax(P),[9 3],{'tansig' 'tansig'}, 'traingdx') net.Lw{2,1}=net.LW{2,1}*0.001; net.b{2}=net.b{2}*0.001; %no noise %无噪声训练 T=targets; net.performFcn='sse'; net.trainParam.goal=0.0001; %net.trainParam.show=20; net.trainParam.epochs=5000; net.trainParam.mc=0.95; [net,tr]=train(net,P,T); %有噪声操练 netn=net; netn.trainParam.goal=0.0003; netn.trainParam.epochs=300; T=[targets targets targets targets]; for pass=1:10 P=[alphabet,alphabet,... (alphabet+randn(R,Q)*0.1),... (alphabet+randn(R,Q)*0.2)]; [netn,tr]=train(netn,P,T); end %***************************************** %**************************************** %再次无噪声训练 netn.trainParam.goal=0.0001; netn.trainParam.epochs=500; %netn.trainPanram.show=5; P=alphabet; T=targets; [netn,tr]=train(netn,P,T); %********************************************** %********************************************** %系统性能 noise_range=0:.05:.5; max_test=10; network1=[]; network2=[]; T=targets; for noiselevel=noise_range errors1=0; errors2=0; for i=1:max_test P=alphabet+randn(16,3)*noiselevel; A=sim(net,P); %AA=compet(A); errors1=errors1+sum(sum(abs(A-T)))/2; An=sim(netn,P); %AAn=compet(An); errors2=errors2+sum(sum(abs(An-T)))/2; end network1=[network1 errors1/3/10]; network2=[network2 errors2/3/10]; end plot(noise_range,network1*10,'--',noise_range,network2*10); title('识别误差'); xlabel('噪声指标'); ylabel('无噪声——有噪声——'); %测试 testX=[1;1;1;1;1;-1;-1;1;1;1;1;1;1;1;-1;1]; XX=sim(net,testX); XX %*****************
[此贴子已经被作者于2007-7-4 11:51:01编辑过] |