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

📄 bp.m

📁 在matlab环境下
💻 M
字号:
clear all
x1=[1,1]';
x2=[0,0]';
x3=[1,0]';
x4=[0,1]';                         %XOR训练样本
d=[1,1,0,0];                       %预期输出
x=[x1,x2,x3,x4];
w11=0;w12=0;w21=0;w22=0;w1=0;w2=0; %神经网络权值
w11(1)=rand(1,1);w12(1)=rand(1,1); %随机产生初始权值
w21(1)=rand(1,1);w22(1)=rand(1,1);
w1(1)=rand(1,1);w2(1)=rand(1,1);
a0=0;a1=0;a2=0;
r=0.6;                             %训练因子
i=1;k=1;
a11=0;a12=0;a01=0;a02=0;a2=0;      %各神经元的输出
s1=0;s2=0;s3=0;p=0;
b1=0;b2=0;b3=0;                    %神经元的阈值
b1(1)=rand(1,1);
b2(1)=rand(1,1);
b3(1)=rand(1,1);
step=0;                           
e=1;
while abs(e)>0.005
e=0;
for n=x
    a01=n(1);                                    %正向传播
    a02=n(2);
    a11=logsig(a01*w11(k)+a02*w21(k)+b1(k));
    a12=logsig(a01*w12(k)+a02*w22(k)+b2(k));
    a2=logsig(a11*w1(k)+a12*w2(k)+b3(k));
    e=e+(d(i)-a2)^2;                             %计算误差
    s3=-2*(d(i)-a2)*dlogsig(a11*w1(k)+a12*w2(k)+b3(k),logsig(a11*w1(k)+a12*w2(k)+b3(k))); %反向传播
    s2=s3*w2(k)*dlogsig(a01*w12(k)+a02*w22(k)+b2(k),logsig(a01*w12(k)+a02*w22(k)+b2(k)));
    s1=s3*w1(k)*dlogsig(a01*w11(k)+a02*w21(k)+b1(k),logsig(a01*w11(k)+a02*w21(k)+b1(k)));
    w11(k+1)=w11(k)-r*s1*a01;                   %权值更新
    w12(k+1)=w12(k)-r*s2*a01;
    w21(k+1)=w21(k)-r*s1*a02;
    w22(k+1)=w22(k)-r*s2*a02;
    w1(k+1)=w1(k)-r*s3*a11;
    w2(k+1)=w2(k)-r*s3*a12;
    b1(k+1)=b1(k)-r*s1;
    b2(k+1)=b2(k)-r*s2;
    b3(k+1)=b3(k)-r*s3;
    i=i+1;k=k+1;
    
end
step=step+1;
i=1;
end
w=[w11(k) w12(k);w21(k) w22(k);w1(k) w2(k)]';
b=[b1(k) b2(k) b3(k)];
disp('最后权矩阵');
w
disp('最后阈值');
b
disp('循环次数:');
step
disp('总误差:');
e
for m=x
    disp('输入样本:');
    m
    a11=logsig(m(1)*w11(k)+m(2)*w21(k)+b1(k));
    a12=logsig(m(1)*w12(k)+m(2)*w22(k)+b2(k));
    a2=logsig(a11*w1(k)+a12*w2(k)+b3(k));
    disp('输出结果:');
    a2
end
    
    
    
    
    

⌨️ 快捷键说明

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