极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4714|回复: 5

processing神经网络(1)

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

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

使用道具 举报

发表于 2016-11-4 00:24:12 | 显示全部楼层
不明觉厉啊!!!!有点看不懂是啥意思。。。
回复 支持 反对

使用道具 举报

发表于 2016-11-4 09:19:14 | 显示全部楼层
放一个实现具体控制的例子就好了,体现神经网络控制的优越性
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2019-11-17 16:43 , Processed in 0.050649 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表