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

📄 bp_network5.asv

📁 主成分分析法计算过程matlab实现软件
💻 ASV
字号:
%BP网络的第一阶段学习期(训练加权系数wki,wij)
%初始化
lr0=0.05;err_goal=0.0001;        %lr为学习速率;err_goal为期望误差最小值
max_epoch=2000;a=0.9;         %max_epoch为训练的最大次数;a为惯性系数
%提供两组训练集和目标值(4输入,1输出)
X
T
%初始化wki,wij(M为输入节点j的数量;q为隐含层节点i的数量;L为输出节点k的数量)
[M,N]=size(X);q=8;[L,N]=size(T);%N为训练集对数量
Wij=rand(q,M);Wki=rand(L,q);
b1=zeros(q,1);b2=zeros(L,1);     %随机给定隐含层、输出层的偏值

for epoch=1:max_epoch
    
    Oi=tansig(Wij*X);         %计算网络隐含层的各神经元输出
    Ok=purelin(Wki*Oi);       %计算网络输出层的各神经元输出
    E=T-Ok;                      %计算网络误差
    deltak=deltalin(Ok,E);       %计算输出层的delta
    deltai=deltatan(Oi,deltak,Wki); %计算隐含层的delta
    %调整输出层加权系数
    
    [dWki,db2]=learnbp(Oi,deltak,lr);
    Wki=Wki+dWki;b2=b2+db2;
    %调整隐含层加权系数
    [dWij,db1]=learnbp(X,deltai,lr);
    Wij=Wij+dWij;b1=b1+db1;
    %计算网络权值修正后的误差平方和
    SSE=sumsqr(T-purelin(Wki*tansig(Wij*X)));
   if (SSE(lp+1)<SSE(lp))
       lr(lp+1)=1.05*lr(lp);
   elseif (SSE(lp+1)>1.04*SSE(lp))
       lr(lp+1)=0.7*lr(lp);
   else
       
       
       lr0/(1+epoch/10); 
   if (SSE<err_goal)break;end
end
epoch
%Wij,Wki
%BP算法的第二阶段工作期(根据训练好的Wki,Wij和给定的输入计算输出)
X1=X;     %给定输入
%计算隐含层各神经元输出
Oi=tansig(Wij*X1);
Ok=purelin(Wki*Oi);
Ok                                   %显示网络输出层的输出

⌨️ 快捷键说明

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