BP神经网络matlab代码

                               实验一  BP神经网络

实验目的:

用MATLAB验证课本25页例2.1,理解BP神经网络算法

实验平台:

笔记本电脑,MATLAB2010版本

实验内容:

M文件如下:

x=[1,0,1];%训练样本
l=0.9;%学习率
w=[0.2,-0.3,0.4,0.1,-0.5,0.2,-0.3,-0.2];%网络连接权重
p=[-0.4,0.2,0.1];%神经元偏置
for i=1:1
    %每个神经元的总输入和输出计算如下
    s4=w(1)*x(1)+w(3)*x(2)+w(5)*x(3)+p(1);
    o4=1/(1+exp(-s4));
    s5=w(2)*x(1)+w(4)*x(2)+w(6)*x(3)+p(2);
    o5=1/(1+exp(-s5));
    s6=o4*w(7)+o5*w(8)+p(3);
    o6=1/(1+exp(-s6));
    o3=x(3);
    o2=x(2);
    o1=x(1);
    %输出层和隐含层神经元的误差计算如下
    e6=o6*(1-o6)*(1-o6);
    e5=o5*(1-o5)*e6*w(8);
    e4=o4*(1-o4)*e6*w(7);
    %网络连接权值和神经元偏置更新如下
    w(8)=w(8)+l*o5*e6;
    w(7)=w(7)+l*o4*e6;
    w(6)=w(6)+l*o3*e5;
    w(5)=w(5)+l*o3*e4;
    w(4)=w(4)+l*o2*e5;
    w(3)=w(3)+l*o2*e4;
    w(2)=w(2)+l*o1*e5;
    w(1)=w(1)+l*o1*e5;
    p(1)=p(1)+l*e4;
    p(2)=p(2)+l*e5;
    p(3)=p(3)+l*e6;
end
    o4
    o5
    o6
    e4
    e5
    e6
    w
    p

进行一次迭代的结果如下:

o4 =

    0.3318


o5 =

    0.5250


o6 =

    0.4739


e4 =

   -0.0087


e5 =

   -0.0065


e6 =

    0.1312


w =

    0.1941   -0.3059    0.4000    0.1000   -0.5079    0.1941   -0.2608   -0.1380


p =

   -0.4079    0.1941    0.2181

将for i=1:1改为for i=1:100
进行100次迭代的结果如下:

o4 =

    0.3610


o5 =

    0.6202


o6 =

    0.9312


e4 =

  3.2207e-004


e5 =

  8.5355e-004


e6 =

    0.0044


w =

    0.3309   -0.1691    0.4000    0.1000   -0.5003    0.3309    0.3183    0.8248


p =

   -0.4003    0.3309    1.9850


实验分析:

预期分类标号为1;
第1次迭代结果为0.4739,误差较大,为52.61%;
第100次迭代结果为0.9312,和预期非常接近,误差仅为6.98%;
第200次迭代结果为0.9548,误差仅为4.52%;
第1000次迭代结果为0.9821,误差仅为1.79%;
第10000次迭代结果为0.9949,误差仅为0.51%。
上述各迭代时间均不超过1秒,算法的时间复杂度低;

篇幅有限,仅贴出第1次和第100次的运行结果。

实验心得:

BP神经网络在解决本例题中表现优异,准确,迅速,且收敛快速。

2017.5.17



当年的计算智能课作业

猜你喜欢

转载自blog.csdn.net/sinat_39416814/article/details/93749085