您现在的位置:首页 >> 机器学习 >> 内容

m基于多集成BP神经网络的matlab仿真,神经网络通过编程实现不使用工具箱

时间:2022/12/31 18:16:36 点击:

  核心提示:05_032_m,包括程序操作录像+参考文献...

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

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168