⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bpsuanfa.m

📁 模式分类
💻 M
字号:

CHA1=zeros(3,13);
CHA2=zeros(3,13);
SSEA=zeros(max_epoch,13);
for k=3:15
    S1(k)=k;

[R ,Q]=size(P);
[S2,Q]=size(T);
hidout=zeros(S1(k),Q);
netout=zeros(S2,Q);%对隐含层和网络输出进行初始化
max_epoch=2000;%最大训练次数
lr=0.003;%学习步长
E0=0.5;%最小平方误差
W1=0.2*rand(S1(k),R)-0.1;
B1=0.2*rand(S1(k),1)-0.1;
W2=0.2*rand(S2,S1(k))-0.1;
B2=0.2*rand(S2,1)-0.1;%对权值和阈值进行初始化
W1EX=[W1,B1];
W2EX=[W2,B2];%将权值和阈值合并为一个矩阵
PEX=[P' ones(Q,1)]';%也就将阈值作为一个输入


    
    Errhistory=zeros(max_epoch,1);%记录每次训练的误差初始化
    tic
for i=1:max_epoch
    hidout=logsig(W1EX*PEX);
    hidoutEX=[hidout' ones(Q,1)]';
    netout=logsig(W2EX*hidoutEX);
    Error=T-netout;
    SSE=sumsqr(Error);
    Errhistory(i)=SSE;
    if  SSE<E0,
       break,
    end
    delta=Error;
    delta2=delta.*netout.*(ones(S2,Q)-netout);
    delta1=W2'*delta2.*hidout.*(ones(S1(k),Q)-hidout);
    dW2EX=delta2*hidoutEX';%输出层的权值和阈值修正量
    dW1EX=delta1*PEX';%隐含层的权值和阈值修正量
    W2EX=W2EX+lr*dW2EX;
    W1EX=W1EX+lr*dW1EX;
    W2=W2EX(:,1:S1(k));
    B2=W2EX(:,S1(k)+1);
     W1=W1EX(:,1:R);
    B1=W1EX(:,R+1);%将权值和阈值分开
end
toc
SSEA(:,k-2)=Errhistory;






class1=zeros(S2,1);
class2=zeros(S2,1);
class3=zeros(S2,1);
class4=zeros(S2,1);
indexout1=zeros(S2,Q);
indexout2=zeros(S2,Q);
for  i=1:Q
   [m1,count1]=max(T(:,i));
  class1(count1)=class1(count1)+1;
    indexout1(count1,class1(count1))=i;
end
for i=1:S2
  
    index1=indexout1(i,1:class1(i));
    [b1,pos1]=max(T(:,index1));
    [b2,pos2]=max(netout(:,index1));
    for j=1:class1(i)
        if pos1(j)==pos2(j),
           class3(i)=class3(i)+1;
        end
    end
    
end
cha1=class3./class1;
CHA1(:,k-2)=cha1;
for  i=1:Q
   [m2,count2]=max(netout(:,i));
  class2(count2)=class2(count2)+1;
    indexout2(count2,class2(count2))=i;
end
for i=1:S2
    index2=indexout2(i,1:class2(i));
    [b3,pos3]=max(T(:,index2));
    [b4,pos4]=max(netout(:,index2));
    for j=1:class2(i)
        if pos3(j)==pos4(j),
            class4(i)=class4(i)+1;
        end
    end
    
end
cha2=class4./class2;
CHA2(:,k-2)=cha2;
end
figure
plot(1:max_epoch,SSEA(:,1),'r');
text(1,107.9774 ,'\leftarrow3');
hold on
plot(1:max_epoch,SSEA(:,2),'b');
text(100,93.7003,'\leftarrow4');
hold on
plot(1:max_epoch,SSEA(:,3),'r');
text(250,56.0246,'\leftarrow5');
hold on
plot(1:max_epoch,SSEA(:,4),'b');
text(400,44.3037,'\leftarrow6');
hold on
plot(1:max_epoch,SSEA(:,5),'r');
text(550,39.4520,'\leftarrow7');
hold on
plot(1:max_epoch,SSEA(:,6),'b');
text(700,28.5728,'\leftarrow8');
hold on
plot(1:max_epoch,SSEA(:,7),'r');
text(850,21.9691,'\leftarrow9');
hold on
plot(1:max_epoch,SSEA(:,8),'b');
text(1000,17.0683,'\leftarrow10');
hold on
plot(1:max_epoch,SSEA(:,9),'r');
text(1200,12.5269,'\leftarrow11');
hold on
plot(1:max_epoch,SSEA(:,10),'b');
text(1400,9.4222,'\leftarrow12');
hold on
plot(1:max_epoch,SSEA(:,11),'r');
text(1600,8.7123,'\leftarrow13');
hold on
plot(1:max_epoch,SSEA(:,12),'b');
text(1800,7.9255,'\leftarrow14');
hold on
plot(1:max_epoch,SSEA(:,13),'r');
text(2000,7.4506,'\leftarrow15');

    
    




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -