NeuronBlack 发表于 2016-11-2 18:04:13

processing神经网络(1)

      人工智能是一门多领域交叉的学科,其门槛非常之高。神经网络算法是人工智能常用算法之一,这几天无意中发现了一个基于java的神经网络框架Neuroph,这个框架对神经网络算法进行了高度封装,有点类似于arduino,使得新手可以轻松上手。只是国内只有对其简单的介绍,并没有详细教程。所以我打算写一下对其的详细教程,为了使大家更容易接受所以我打算用采用processing来对neuroph进行详细的介绍。笔者并没有专门研究过processing,若有错误欢迎指出。另外笔者也在边写边研究该框架,如果之前文章有疏漏会在后续章节补上。
      那么第一步我就来介绍开发前的准备吧,非常的简单。打开neuroph的官网 http://neuroph.sourceforge.net/下载zip文件,neuroph提供了自己的图形化ide环境,有兴趣的朋友可以下载neurophstudio来研究下。
      解压文件后打开目录会发现一个叫做neuroph-core-2.92的jar文件,我们目前只需要这个文件就行了,打开processing ide,直接将此jar文件拖入ide中去,我们的开发环境便准备好了。
   下面就简单的介绍下神经网络,神经网络算法顾名思义模仿人的神经系统来达到人工智能的效果。神经网络中最小的单位是神经元,神经元之间相互连接便成了复杂的神经网络,信息就在这个网络中传递处理。所以第一步我们要创建一个神经元。

Neuron neuron=new Neuron();   一个神经元自然可以向外传递数据:neuron.setOutput(5.0);   当然一个神经元啥都干不了,我们要多来几个才能组成一个神经网络:
Neuronneuron1=new Neuron();
Neuronneuron2=new Neuron();      这里我们创造了两个神经元,这依旧不是一个神经网络,因为他们两个之间并没有连接,我们需要用一根线将他们连在一起:Connection connection=new Connection(neuron1,neuron2,0.5);      注意在官方说明中Connection的构造方法的参数是fromNeuron,toNeuron,weight,所以这个连接是有方向的本例中neuron1指向了neuron2,那么就来说说第三个参数weight。联系下生活实际我们识别一个事物会从它的形状,颜色等等来进行判断,但这种种的因素对你最终判断的影响程度是不一样的,我们可以用权重来表示它对最终结果的影响程度。本例中neuron1的权重为0.5。
   下面我们就来测试下刚刚写好的代码:
Neuronneuron1=new Neuron();
Neuronneuron2=new Neuron();
Connection connection=new Connection(neuron1,neuron2,0.5);
println(connection.getWeight());
neuron1.setOutput(5.0);
println(connection.getInput());      控制台输出了0.5和5.0,由此最简单的一个神经网络便搭建好了,用一张图来表示下我们搭建的神经网络:       http://www.geek-workshop.com/forum.php?mod=image&aid=32902&size=300x300&key=bd0203a33ee4c8a9&nocache=yes&type=fixnone

henrypcw 发表于 2016-11-2 19:09:12

期待更新.......:)

幻生幻灭 发表于 2016-11-3 08:06:34

不觉明历

darkorigin 发表于 2016-11-4 00:24:12

不明觉厉啊!!!!有点看不懂是啥意思。。。

ILLUSION 发表于 2016-11-4 09:19:14

放一个实现具体控制的例子就好了,体现神经网络控制的优越性
页: [1]
查看完整版本: processing神经网络(1)