最近在搞神经网络,我选择了和别人不同的学习方法,别人是先搞定数学,在搞理论,最后搞应用。而我是先大致搞清楚神经网络的大致流程和BP的基本算法,然后找一些开源的神经网络框架来学习,直接搞应用,最后在理论和数学不懂的地方再去查资料学习。结果发现这种方法很好,最起码很能调动我学习这些深奥知识的兴趣。搞了没几天,竟然可以把神经网络用于自己项目中了,爽!
寻找开源项目没花多少时间,在百度里搜神经网络,发现有很多都在谈论Joone这个项目,估计这个人缘不错,然后到sourceforge上面一查,确实下载量很大,社区搞得也不错。下载关于它的所有资源,一切准备就绪,开始搞定它的源代码。
读它的源代码过程中发现,这个项目写得确实很不错,层次非常清楚,用了几个核心类(Layer,Synapse,Learner,Matrix,NeuralNet和Monitor)和几种设计模式 (Factory,Adapter,Observer等)就把神经网络复杂的结构构建得清清楚楚,读它的源代码真的很值,不仅可以搞清楚神经网络的原理,还可以学习到如何用程序构建神经网络,以下是我读源代码的收获:
1)Layer层是包含神经元的层次,从一些理论书上得知,虽然层次越多精确度越高,但复杂度也越大,在实际应用中一般都是用3层。在Joone里一般也只用三层,分别是输入层,隐藏层和输出层。Layer层主要作用有两个:传递数据和激化函数。Joone有个基类Layer,它有两个主要函数fwdRun和revRun,一个是先前传递,一个向后传递,先前主要是训练,向后主要是学习和修改权矩阵。fwdRun和revRun的过程很类似,fwdRun是分为三步:向输入Synapse中取数据,用激化函数处理数据,向输出Synapse中放数据。revRun过程正好相反。Layer下面有很多子类,如:LinearLayer,SigmoidLayer,SineLayer等,这些子类主要是派生forward和backward函数,这两个函数主要用途就是用激化函数去处理输入数据,如LinearLayer的激化函数是线性的,SigmoidLayer的激化函数是1/(1+ex)等。
2)Synapse主要是构建突触的层次。它主要是用途有两个:连接Layer和储存权矩阵。因为基于多线程,连接Layer主要采用缓冲机制。Synapse有个缓冲区,先用fwdGet方法取数据,如果缓冲区内有数据就让线程wait。再用forward方法更新数据,最后用fwdPut方法输出数据,如果缓冲区内没有数据就让线程wait。revGet和revPut的思想基本相似,中间的backward方法主要用于更新权矩阵。Synapse下面有很多子类,如FullSynapse,KohonenSynapse等,它们也是在forward和backward方法上面派生,主要差别是在连接机制上面,比如FullSynapse采用全连接机制。
3)Layer层和Synapse层结构非常类似,互相连接互相传递数据,子类继承机制也非常相似,都是派生forward和backward方法,用基类完成基本的数据传递,让子类完成特殊的数据处理。数据流和工作流清清楚楚,并能适用于任何情况。这不光包含了神经网络原理,更是包含了软件设计艺术,真是值得学学!
4)Monitor主要是监视类,用于监视和控制整个网络的运行
5)NeuralNet是整个网络的控制中心。用于配置和连接各个层次,并控制网络的开始,结束,和中间循环的开始和结束。它的主要程序有三个步骤:一,循环初始化所有Layer和Synapse 二,循环进行向前和向后过程 三,结束程序。并且Jooner提供了NeuralNetListener接口,用于监视和控制NeuralNet的所有过程
基本上Jooner的大致思想和过程就是这么些,但它里面的细节却远不止这些,以后的工作就在于深入学习它的学习机制,数据处理和分布式处理方式。并且可以写自己的Layer和Synapse来做试验。现在终于能体会到数学在编程中的应用了。以后争取把神经网络用于自己的项目,比如搜索引擎和CRM。估计可以在专家决策和客户数据分析等方面有些运用吧,不过估计蔡总不太会愿意用这些比较虚幻的技术。
用Joone实现人工智能编程有感
来源:互联网 发布日期:2011-12-16 19:07:53 浏览:35457次
导读:最近在搞神经网络,我选择了和别人不同的学习方法,别人是先搞定数学,在搞理论,最后搞应用。而我是先大致搞清楚神经网络的大致流程和BP的基本算法,然后找一些开源的神经网络框架来学习,直接搞应用,最后在理论和数学不懂的地方再去查资料学习。结果发现...
下一篇:自组织神经网络
相关内容
AiLab云推荐
最新资讯
本月热点
热门排行
-
不被“机器狗之父”看好的人形机器人,未来要如何发展?
阅读量:72838
-
国产版达芬奇手术机器人价格跳水,是价格战要来了吗?
阅读量:67706
-
借势智元机器人,富临精工跨界入局人形机器人,准备好了吗?
阅读量:43616
-
实探全球首个核电灯塔工厂,这里有各式各样的机器人 | 碳访
阅读量:41897
-
傅盛:我不看好双足机器人的商业化
阅读量:13266
-
英伟达利用苹果Vision Pro加速人形机器人开发
阅读量:11268
推荐内容
- 2024山东国际玻璃工业技术展览会
- 2024第二十二届中国广州国际汽车展览会
- 2024年荷兰阿姆斯特丹船舶游艇设备展览会METS TRADE
- IADE2024第三届突尼斯(杰尔巴)国际航空航天与防务展
- 2024秋季中国(广州)国际茶业博览会
- 2024亚洲国际消费电子技术展(南京站)
- 2024第21届潍坊茶业博览会暨紫砂展
- 2024第38届中国植保信息交流暨农药械交易会(中国植保双交会)暨2024丘陵山区农业机械 及设施农业展览会
- 2024第20届中国(重庆)国际秋季茶产业博览会暨紫砂、陶瓷、茶具用品展(华巨臣茶博会)
- 第十六届中国绿色食品博览会暨江西茶业展
- 2024中国(西安)国际低空经济发展大会
- 2024ECIE电商创新展原第十届山东(济南)电子商务产业博览会
- 2024年AACF亚洲曼谷成人展暨亚洲奇妙文化节
- 2024AIG第四届妙国际动漫游戏暨数码互动娱乐产业博览会
- 2024年第9届北京国际少年儿童素质教育及产品展览会
- 2024厦门国际咖啡产业博览会(厦门咖啡展)
- 2024亚洲运动用品与时尚展暨慕尼黑文体节(厦门站) ISPO
- 2024巴西国际健身及康体设施展览会
- 2024北京第4届中冰展暨亚餐会
- 2024第八届南京国防电子展
- 2024第22届亚洲电源产品技术展(南京)
- 2024第八届亚洲雷达展览会
- 2024亚洲消费电子技术展
- 2024第八届亚洲无人机产业展(南京)
- 2024秋季海外置业移民留学展览会
- 2024中国(东莞)国际包装印刷展览会
- 2024第四届成都国际乐器展览会
- 2024年法国巴黎农业机械展览会SIMA