资源简介

自己编的非工具箱BP神经网络程序 对大家理解BP网络权值和阈值的具体怎么修改有很大的帮助

资源截图

代码片段和文件信息

clear all 
clc

%原函数
i=1;
for t1=2000*pi:0.1:2004*pi;
    x(i)=3000+100*sin(t1)+10*rand(1);
    i=i+1;
end
i=1;
for t2=2000*pi:0.15:2004*pi;
    x2(i)=3000+100*sin(t2)+10*rand(1);
    i=i+1;
end
t1=2000*pi:0.1:2004*pi;

[pnminpmaxptnmintmaxt] = premnmx(t1x);
t1=pn;x=tn;%归一化
%[pnminpmaxp] = premnmx(t1);
%t1=pn;%归一化

max_epoch=1000;
emax=0.00001;
delta=0.1;
[m1n]=size(t1);
[mn]=size(x);


h=20 %隐含层有20个节点
V=rand(hm1);
B1=rand(h1);
W=rand(mh);
B2=rand(m1);%权值和阈值初始化
             %VB1是输入层到隐层的权值和阈值;W,B2是隐层到输出层的权值和阈值
tic
for k=1:max_epoch
       q=randperm(n); %产生随机1-n的数列,为后面的打乱顺序输入做准备
       for p=1:n
           q1=q(p);  
        %计算从输入层到隐层
        net1=V*t1(:q1)+B1;
        y1=1./(1+exp(-net1)); %S型
        %计算从隐层到输出层
        net2=W*y1+B2;
        y2=net2; %线性
       
        e=x(q1)-y2;%计算误差      
        %调整W、V、B1、B2
        V=V+delta*(y1.*(1-y1).*(e‘*W)‘)*t1(:q1)‘;
        B1=B1+delta*y1.*(1-y1).*(e‘*W)‘;
        W=W+delta*e*y1‘;
        B2=B2+delta*e;
       end
       %计算总体误差,判断迭代是否停止
        net3=V*t1+B1*ones(1n);
        y3=1./(1+exp(-net3));
        y4=W*y3+B2*ones(1n);
        ee(k)=0.5*(x-y4)*(x-y4)‘; 
        if ee(k)            break 
        end
      
end
toc
figure(1)
plot(ee);
legend(‘迭代误差‘)
xlabel(‘迭代次数‘);
ylabel(‘训练误差‘);
figure(2)
plot(t1x‘b‘);
hold on
plot(t1y4‘r--‘);
legend(‘样本数据‘‘BP网络输出‘);
 
%验证训练效果
t2=2000*pi:0.15:2004*pi;
l1=length(t2)
net1=[];
net2=[];
[pnminpmaxptnmintmaxt] = premnmx(t2x2);
t2=pn;x2=tn;
 for j=1:l1
     net1=logsig(t2(j)*V‘+B1‘);%1/(1+exp(-t1));%计算第一层输出
     net2(j)=W*net1‘+B2;%计算输出层输出
       
     %e1(j)=x2(j)-net2(j);%计算误差
 end

i=1;
for t2=2000*pi:0.15:2004*pi;
    x2(i)=3000+100*sin(t2)+10*rand(1);
    i=i+1;
end

net22=postmnmx(net2mintmaxt);
t2=2000*pi:0.15:2004*pi;
for j=1:l1
   e1(j)=x2(j)-net22(j);%计算误差
end
figure(3)
plot(t2x2‘b‘)
hold on
plot(t2net22‘r*‘)
legend(‘样本数据‘‘BP网络输出‘);
xlabel(‘x‘);
ylabel(‘y‘);
figure(4)
plot(e1)
legend(‘误差曲线‘)
xlabel(‘x‘);
ylabel(‘测试误差‘);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2284  2010-01-16 14:30  BP\BP1.m

     文件       1510  2010-01-16 14:31  BP\BP2.m

     文件       3702  2010-01-14 20:28  BP\BP3.m

     文件       2414  2010-01-14 14:33  BP\BP4.m

     目录          0  2010-04-02 10:47  BP

----------- ---------  ---------- -----  ----

                 9910                    5


评论

共有 条评论