最简单的神经网络算法.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最简单的神经网络算法

最简单的人工神经网络实现 人工神经网络算法是模拟 人的神经网络的一种算法. 该算法像人一样,具有一定的学习能力。? 人工神经网络可以学会它所能表达的任何东西. 该算法在模拟人类抽象思维方面较传统的算法具有优势,如图像识别 (人脸识别,车牌识别), 声音识别方面已经有成熟的运用。 ? 举个简单的例子可以说明人工神经网络和传统算法的差别所在 (等会也要实现): 假设要解决这个问题: 写一个程序, 判断 0, 1, 2, 3 ... 9 这10个数的奇偶性 1. 如果是传统算法, 则是模拟人的逻辑思维,对这个问题进行形式化和逻辑化 : if (input 模 ?2? == 零) { ??? input 是 偶数 } else { ??? input 是 奇数 } 2. 如果是ANN算法,则要提供一组正确的数据对处理这个问题的神经网络ANN进行训练 : 未进行训练的神经网络,就像刚出生的婴儿一样,什么都不懂。这个时候, 你要教他 0 是偶数,? 1是奇数...., 教完之后问ANN懂了没有,懂了则停止训练 (网络已经形成),不懂则继续训练. while (1) { ??? 训练; ????if (测试通过)? { ???????? 跳出循环; ??? }? } 训练完之后,这个ANN以后便能够正确处理 奇偶性判断的问题了. 处理上面这个问题,只需要模拟一个神经元即可,再复杂的问题,可能需要多个神经元,再再复杂,需要多层多神经元的配合来实现 (以后再研究) ? 下面是实现: [cpp] view plaincopyprint? /*****************************************? ?*?感知器判断数字奇偶性? ?*? ?*?关键点,阈值应该怎么定?? ?****************************************/?? #include?stdlib.h ?? #include?stdio.h ?? #include?time.h ?? ?? ?? int?M[10];??/**?权值?**/?? int?X[10]?=?{1,?2,?3,?4,?5,?6,?7,?8,?9,?10};?/**?输入向量?**/?? int?Y[10]?=?{1,?0,?1,?0,?1,?0,?1,?0,?1,?0};??/**?理想输出向量,?0?表示奇数,?1表示偶数?**/?? int?O[10];??/**?保存输出向量?**/?? int?ST?=?52;?/**?阈值?**/?? ?? ?? ?? /**?初始化权值?**/?? void?initM?()?? {?? ????int?x?=?0;?? ????srand?((unsigned?int)time(0));?? ????for?(x?=?0;?x??10;?++x)?{?? ????????/**?随机数在?0?-?99?之间?**/?? ????????M[x]?=?rand?()?%?100;?? ????}?? }?? ?? /**?跃迁型激活函数?**/?? int?active?(int?m,?int?x)?? {?? ????int?o?=?m?*?x;?? ????if?(o??ST)?{?? ????????return?1;?? ????}?else?{?? ????????return?0;?? ????}?????? }?? ?? /**?计算输出向量?**/?? void?calcY?()?? {?? ????int?x?=?0;?? ????for?(x?=?0;?x??10;?++x)?{?? ????????O[x]?=?active?(M[x],?X[x]);?? ????}?? }?? ?? ?? /**?根据实际输出向量和理想输出向量调整权向量,?? ????返回?实际输出和理想输出不匹配的数目?**/?? int?adjustM?()?? {?? ????int?err?=?0;?? ????int?x?=?0;?? ????for?(x?=?0;?x??10;?++x)?{?? ????????if?(O[x]?!=?Y[x])?? ????????{?? ????????????err?++;?? ????????????if?(0?==?O[x])?{?? ????????????????M[x]?+=?X[x];?? ????????????}?else?{?? ????????????????M[x]?-=?X[x];?? ????????????}?? ????????}?? ????}?? ????return?err;?? }?? ?? ?? /**?打印权向量?**/?

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档