多层感知机逼近异或逻辑

网络结构采用两层BP网:其中隐层单元数为2 ;神经元激励函数用sigmoid函数

结构图如下所示:

 


   红色(收敛过程)  步长系数 0.8 稳定系数 0.8 sigmoid函数斜率为1

经学习后的权矩阵(其中w[0][0] w[0][1] w[0][2]分别表示神经元123的偏差b1b2b3)

w[0][0] = 2.930361      w[0][1] = -3.579205     w[0][2] = 4.659665

w[1][0] = 6.130275      w[1][1] = 6.569888      w[1][2] = -9.740614

w[2][0] = -5.878284     w[2][1] = -6.574233     w[2][2] = 9.937957

 

       蓝色(不收敛过程)步长系数8 稳定系数0.1 sigmoid函数斜率为0.5

经学习后的权矩阵(其中w[0][0] w[0][1] w[0][2]分别表示神经元123的偏差b1b2b3)

w[0][0] = -0.952549     w[0][1] = 1.780068      w[0][2] = 1.343411

w[1][0] = -15.287239    w[1][1] = -18.513069    w[1][2] = -6.578238

w[2][0] = -15.947301    w[2][1] = -19.173033    w[2][2] = -10.848843

刚开始不知道如何利用训练次数与相应误差来描述相关曲线,我又不熟悉MATLAB,只是近些日子开始接触OpenGL,想利用自己近些天所学,来完成这个曲线的描绘,思考了一下思路,还是比较简单的。只是每次训练保存一组数据(误差,训练次数),并以此为坐标在坐标轴中描出相应的点,使得结果看起来像条连续的曲线,并且不需要打的数组来保存每次生成的数据坐标(误差,训练次数),只需将误差值映射到y坐标轴上,将训练次数映射到x坐标轴上,其核心思想只用了

glBegin();

       glVertex2f(训练次数映射到x上的值,误差映射到y上的值);

glEnd();

就这么简单,实现了不错的效果,而且是自己编程实现的。主要是感觉自己渐渐有了用程序来表达自己想法的思路,甚喜,继续努力!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值