1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y52bl5pp
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
在BP神经网络中,隐含层数量对神经网络的性能有着至关重要的影响,如果隐含层数量过多,会大大增加BP神经网络的内部结构的复杂度,从而降低学习效率,增加训练时间;如果隐含层数量过少,则无法精确获得训练输入数据和输出结果之间的内在规律,增加预测误差。因此,选择合适的隐含层个数具有十分重要的意义。由于隐含层个数的设置没有明确的理论可以计算,通常情况下,采用逐次分析的方法获得,即通过对不同隐含层所对应的神经网络进行预测误差的仿真分析,选择误差最小情况下所对应的隐含层个数。
4.部分源码
%BP1~4
KER = 4;%集成个数
W0 = rand(NI,Nh,KER);
deltaW0 = zeros(NI,Nh,KER);
dW0 = zeros(NI,Nh,KER);
W = rand(Nh,No,KER);
deltaW = zeros(Nh,No,KER);
dW = zeros(Nh,No,KER);
ERR = [];
Index = 1;
while(Index<=Max_iteration)
Index
jj=1;
error2 = zeros(Len,KER);
while(jj<=Len)
for k=1:No;
d(k)=T(jj);
end
for i=1:NI;
x(i)=P(jj,i);
end
%集成多个BP神经网络
for bpj = 1:KER
for j=1:Nh%BP前向
net=0;
for i=1:NI
net=net+x(i)*W0(i,j,bpj); %加权和∑X(i)V(i)
end
y(j)=1/(1+exp(-net));
end
for k=1:No
net=0;
for j=1:Nh
net=net+y(j)*W(j,k,bpj);
end
%输出值
o(k)=1/(1+exp(-net));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
errortmp=0.0;
for k=1:No
errortmp=errortmp+(d(k)-(o(k)))^2;%传统的误差计算方法
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
error2(jj,bpj)=0.5*errortmp/No;
for k=1:No%BP反向计算
yitao(k)=(d(k)-o(k))*o(k)*(1-o(k));%偏导
end
for j=1:Nh
tem=0.0;
for k=1:No
tem=tem+yitao(k)*W(j,k,bpj);
end
yitay(j)=tem*y(j)*(1-y(j));%偏导
end
。。。。。。。。。。。。。。。。。。。。。。。。。。
end
jj=jj+1;
end
%BP训练结束
error = sum(mean(error2));
%误差是否达到精度
if error<Paim;
break;
end
Index = Index+1;
ERR = [ERR,error];
end
05_032_m