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

📄 bpjob.m

📁 网上的大部分BP实现曲线拟合都使用MATLAB库函数
💻 M
字号:
c=1;
d=1;
sample=zeros(21,1);
for p=0:0.001:1    
      y(c)=(sin(p*pi*2)+1)/2;  
    if mod(p,0.05)==0
        sample(d,1)=y(c);     
        d=d+1;
    end      
   c=c+1;
end   
  w1=rand(21,10);
  w2=rand(21,10); 
  out1=zeros(21,10);
  out2=zeros(21,1);
  s1=zeros(21,10); 
  s2=zeros(21,1);
  vv2=zeros(21,1);
  vv1=zeros(21,10);
  dd2=zeros(21,10);
  dd1=zeros(21,10);  
  d=1;  
  sum=zeros(1001,1);
  e=1;
 for u=1:1000
     hold off
     d=1;
  for i=0:0.05:1 
     for j=1:10
          s1(d,j)=i*w1(d,j);        
          out1(d,j)=1/(exp((-1)*s1(d,j))+1);    %第一层第j个神经元输出  
      end  
          temp =0;
      for k=1:10
          temp = temp+out1(d,k)*w2(d,k);         
      end   
      s2(d,1) = temp;
      out2(d,1)=1/(exp((-1)*s2(d,1))+1);  %第二层神经元输出   
      vv2(d,1)=out2(d,1)*(1-out2(d,1))*(sample(d,1)-out2(d,1));  %输出层的d
      for b=1:10
          dd2(d,b)=0.1*vv2(d,1)*out1(d,b);  %输出层的修正 w
          vv1(d,b)=vv2(d,1)*w2(d,b)*out1(d,b)*(1.00-out1(d,b));          
          dd1(d,b)=0.1*vv1(d,b)*i;  %隐含层的修正 w
      end        
     for j=1:10
      w2(d,j)=w2(d,j)+dd2(d,j);  %修正权值
      w1(d,j)=w1(d,j)+dd1(d,j);
     end 
     d=d+1;
 end   
 d=1; 
 error=0;
   for i=0:0.05:1           
      for j=1:10
          s1(d,j)=i*w1(d,j);        
          out1(d,j)=1/(exp((-1)*s1(d,j))+1);    %第一层第j个神经元输出  
      end  
      T1=0;
      for k=1:10
          T1=out1(d,k)*w2(d,k)+T1;       
      end  
      s2(d,1)=T1;
      out2(d,1)=1/(exp((-1)*s2(d,1))+1);   
      error=error+(sample(d,1)-out2(d,1))*(sample(d,1)-out2(d,1));
      plot(i,out2(d,1),'*g');       
      hold on
      d=d+1;       
  end  
  sum(e,1)=error;
  i=[0:0.05:1];
  plot(i,out2,'g');
  hold on
c=1;
d=1;
for p=0:0.001:1    
      y(c)=(sin(p*pi*2)+1)/2;  
    if mod(p,0.05)==0
        sample(d,1)=y(c);       
        plot(p,sample(d,1),'*r');
        hold on
        d=d+1;
    end   
 plot(p,y(c),'b'); 
   c=c+1;
end
  hold on 
  grid on   
  pause(0.001);  
  e=e+1;
end
figure
t=0:0.001:1;
plot(t,sum,'b');
hold on
grid on

⌨️ 快捷键说明

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