📄 bp1.m
字号:
%在线模式
a=load('a.txt');
t=load('t.txt')
b=mean(a);
c=std(a);
for i=1:528
for j=1:10
a(i,j)=(a(i,j)-b(j))/c(j);
end
end
tic
p=a';
t1=t';
samnum=528;
testnum=528;
hiddennum=12;
indim=10;
outdim=4;
maxepochs=2000;
lr=0.012;
e0=1;r=0;
W1=0.2*rand(hiddennum,indim)-0.1;
B1=0.2*rand(hiddennum,1)-0.1;
W2=0.2*rand(outdim,hiddennum)-0.1;
B2=0.2*rand(outdim,1)-0.1;
W1EX=[W1,B1];
W2EX=[W2,B2];
saminex=[p',ones(samnum,1)]';
errhistory=[ ];
for i=1:maxepochs
hiddenout=tansig(W1EX*saminex);
hiddenoutex=[hiddenout' ones(samnum,1)]';
networkout=logsig(W2EX*hiddenoutex);
error=t1-networkout;
SSE=sumsqr(error);
errhistory=[errhistory SSE];
if SSE<e0,
break
end
delta2=error.*networkout.*(1-networkout);
delta1=W2'*delta2.*hiddenout.*(1-hiddenout);
dW2EX=delta2*hiddenoutex';
dW1EX=delta1*saminex';
W2EX=W2EX+lr*dW2EX;
W1EX=W1EX+lr*dW1EX;
r=r+1;
h(r)=SSE;
end
h
plot(h)
W1=W1EX(:,1:indim);
B1=W1EX(:,indim+1);
W2=W2EX(:,1:hiddennum);
B2=W2EX(:,1+hiddennum);
testhiddenout=tansig(W1*p+repmat(B1,1,testnum));
testout=logsig(W2*testhiddenout+repmat(B2,1,testnum));
s=testout;
for i=1:4
for j=1:528
if s(i,j)>=0.52
s(i,j)=0.99;
else s(i,j)=0.01;
end
end
end
count(1,1:11)=0;
for j=1:528
if s(:,j)==t1(:,j)
if s(:,j)==[0.01;0.01;0.01;0.99]
count(1)=count(1)+1;
elseif s(:,j)==[0.01;0.01;0.99;0.01]
count(2)=count(2)+1;
elseif s(:,j)==[0.01;0.01;0.99;0.99]
count(3)=count(3)+1;
elseif s(:,j)==[0.01;0.99;0.01;0.01]
count(4)=count(4)+1;
elseif s(:,j)==[0.01;0.99;0.01;0.99]
count(5)=count(5)+1;
elseif s(:,j)==[0.01;0.99;0.99;0.01]
count(6)=count(6)+1;
elseif s(:,j)==[0.01;0.99;0.99;0.99]
count(7)=count(7)+1;
elseif s(:,j)==[0.99;0.01;0.01;0.01]
count(8)=count(8)+1;
elseif s(:,j)==[0.99;0.01;0.01;0.99]
count(9)=count(9)+1;
elseif s(:,j)==[0.99;0.01;0.99;0.01]
count(10)=count(10)+1;
elseif s(:,j)==[0.99;0.01;0.99;0.99]
count(11)=count(11)+1;
else end
end
end
COUNT(1,1:11)=0;
for j=1:528
if s(:,j)==[0.01;0.01;0.01;0.99]
COUNT(1)=COUNT(1)+1;
elseif s(:,j)==[0.01;0.01;0.99;0.01]
COUNT(2)=COUNT(2)+1;
elseif s(:,j)==[0.01;0.01;0.99;0.99]
COUNT(3)=COUNT(3)+1;
elseif s(:,j)==[0.01;0.99;0.01;0.01]
COUNT(4)=COUNT(4)+1;
elseif s(:,j)==[0.01;0.99;0.01;0.99]
COUNT(5)=COUNT(5)+1;
elseif s(:,j)==[0.01;0.99;0.99;0.01]
COUNT(6)=COUNT(6)+1;
elseif s(:,j)==[0.01;0.99;0.99;0.99]
COUNT(7)=COUNT(7)+1;
elseif s(:,j)==[0.99;0.01;0.01;0.01]
COUNT(8)=COUNT(8)+1;
elseif s(:,j)==[0.99;0.01;0.01;0.99]
COUNT(9)=COUNT(9)+1;
elseif s(:,j)==[0.99;0.01;0.99;0.01]
COUNT(10)=COUNT(10)+1;
elseif s(:,j)==[0.99;0.01;0.99;0.99]
COUNT(11)=COUNT(11)+1;
else m=0;
end
end
CIUNT(1,1:11)=0;
for j=1:528;
if t1(:,j)==[0.01;0.01;0.01;0.99]
CIUNT(1)=CIUNT(1)+1;
elseif t1(:,j)==[0.01;0.01;0.99;0.01]
CIUNT(2)=CIUNT(2)+1;
elseif t1(:,j)==[0.01;0.01;0.99;0.99]
CIUNT(3)=CIUNT(3)+1;
elseif t1(:,j)==[0.01;0.99;0.01;0.01]
CIUNT(4)=CIUNT(4)+1;
elseif t1(:,j)==[0.01;0.99;0.01;0.99]
CIUNT(5)=CIUNT(5)+1;
elseif t1(:,j)==[0.01;0.99;0.99;0.01]
CIUNT(6)=CIUNT(6)+1;
elseif t1(:,j)==[0.01;0.99;0.99;0.99]
CIUNT(7)=CIUNT(7)+1;
elseif t1(:,j)==[0.99;0.01;0.01;0.01]
CIUNT(8)=CIUNT(8)+1;
elseif t1(:,j)==[0.99;0.01;0.01;0.99]
CIUNT(9)=CIUNT(9)+1;
elseif t1(:,j)==[0.99;0.01;0.99;0.01]
CIUNT(10)=CIUNT(10)+1;
elseif t1(:,j)==[0.99;0.01;0.99;0.99]
CIUNT(11)=CIUNT(11)+1;
else
end
end
time=toc
for i=1:11
pc(i)=count(i)/COUNT(i);
pe(i)=count(i)/CIUNT(i);
end
pc
pe
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -