加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Perceptrons_02_用两层感知器实现异或

(2006-09-09 15:29:26)

% Perceptrons_02

% 用两层感知器实现异或

% 第一层是随机层,即权重何偏差随机确定,以第一层的输出作为第二层的输入

pr1=[0 1;0 1]; % 随机感知器输入的范围

net1=newp(pr1,3);

net1.inputweights{1}.initFcn='rands';

net1.biases{1}.initFcn='rands';

 

index=0;

while index==0

    net1=init(net1);

    iw1=net1.IW{1}

    b1=net1.b{1}

 

    p1=[0 0 1 1;0 1 0 1];

    [a1,pr]=sim(net1,p1);

 

    pr2=[0 1;0 1;0 1];

    net2=newp(pr2,1);

 

    net2.trainParam.epochs=10;

    net2.trainParam.show=1;

    % p2=a1;      %最好不要直接赋值,可能a2=sim(net2,p2)不能正常运行

    p2=ones(size(a1));

    p2=p2.*a1;

    t2=[0 1 1 0];

    [net2,tr2]=train(net2,p2,t2);

    epoch2=tr2.epoch

    perf2=tr2.perf

    iw2=net2.IW{1}

    b2=net2.b{1}

    a2=sim(net2,p2)

 

    save Percept02 net1 net2

   

    if a2==t2

        index=1;

    end

end

 

iw1 =

 

   -0.7931   -0.1845

   -0.6853   -0.8946

   -0.1850    0.8836

 

 

b1 =

 

    0.5804

    0.0272

   -0.5735

 

TRAINC, Epoch 0/10

TRAINC, Epoch 1/10

TRAINC, Epoch 2/10

TRAINC, Epoch 3/10

TRAINC, Epoch 4/10

TRAINC, Epoch 5/10

TRAINC, Epoch 6/10

TRAINC, Epoch 7/10

TRAINC, Epoch 8/10

TRAINC, Epoch 9/10

TRAINC, Performance goal met.

 

 

epoch2 =

 

     0     1     2     3     4     5     6     7     8     9

 

 

perf2 =

 

    0.5000    0.7500    0.5000    0.5000    0.5000    1.0000    0.2500    0.7500    0.2500         0

 

 

iw2 =

 

     2    -3    -1

 

 

b2 =

 

     0

 

 

a2 =

 

     0     1     1     0

 

Perceptrons_02_用两层感知器实现异或

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有