爱吧机器人网 » 技术 > 神经网络 > 正文

基于JOONE快速开发神经网络

基于JOONE快速开发 神经网络
一. 神经网络 介绍
    20世纪70年代以来,随着计算机技术的不断发展,人工 神经网络 (ANN)的理论与实践都得到了迅猛提高。ANN的概念来源于生物 神经网络 (BNN)。限于目前的理论与技术,ANN保留了脑 神经网络 的基本结构,反映脑神经系统的工作原理。在ANN中,记忆的信息存贮在连接权上,外部刺激通过连接通道自动激活相应的神经元,以达到自动识别的目的。因而,它是与现代计算机完全不同的系统。ANN模拟生物体中 神经网络 的某些结构和功能,并反过来用于工程或其他的领域。

二.关于JOONE
    JOONE(Java Object Oriented Neural Network)是sourceforge.net上一个用java语言迅速开发 神经网络 的 开源 项目。JOONE支持很多的特性,比如多线程和分布式计算,这意味着可以JOONE可以利用多处理器或是多计算机来均衡附载。
    JOONE主要有三个大的模块:
joone-engine:joone的核心模块。
joone-editor:joone的gui开发环境。不用编写一行 代码 就建立 神经网络 模型,并可以进行训练和验证。Joone中提供了一个用joone-editor建立xor网络模型的例子,本文中的 神经网络 就是参考这个例子所完成的。
joone-distributed-environment       :joone用于支持分布式计算的模块。
    本文使用joone-editor建立一个用于 模式识别 的 神经网络 ,进行训练,然后在一个java applet 程序中用于识别用户的输入。

三.利用JOONE快速建立 神经网络


   图1是一个简单的 神经网络 ,在joone中用layer来表示每层的所有的节点,用synapse来封装层与层之间的连接。这是相应的java 代码 :
//建立三个sigmoid节点层和两个全连接。
SigmoidLayer layer1 = new SigmoidLayer();
SigmoidLayer layer2 = new SigmoidLayer();
SigmoidLayer layer3 = new SygmoidLayer();
FullSynapse synapse1 = new FullSynapse();
FullSynapse synapse2 = new FullSynapse();
//设置各层的节点个数
layer1.setRows(3);
layer2.setRows(3);
layer3.setRows(3);
//把各层连接起来
layer1.addOutputSynapse(synapse1);
layer2.addInputSynapse(synapse1);
layer2.addOutputSynapse(synapse2);
layer3.addInputSynapse(synapse2);
这样,一个简单的 神经网络 模型就建好了,joone会自动的随机设置连接的权系数。 当然这个网络目前还没有进行训练,没有任何实际的功能。下文将用joone建立一个 模式识别 的 神经网络 。也可以用joone-editor在可视化界面上快速建立 神经网络 ,下图是用joone-editor建立的求解异或问题的 神经网络 模型:


四.建立 模式识别 的 神经网络
[1] 程序说明
本程序是实现一个简单的 模式识别 的 神经网络 。用户在画板中用鼠标写字母,由程序进行识别并显示。用户在一个10X12的区域内绘制字母,点击【识别】按钮,对用户输入的图形进行识别。在右上方显示当前的图像所对应的 神经网络 的输入,在右下方是 神经网络 的输出和识别结果。在图5中用户输入了A,程序作出了正确的识别。


[2] 用joone-editor建立 神经网络 模型
打开joone-editor,新建一个 神经网络 ,如图所示:
该程序的 神经网络 的主要组成部分有:
1、120个输入节点所组成的输入层
2、由8个节点组成的隐层
3、由4个节点组成的输出层
4、一个joone自己的训练层以及两个文件输入层,用来输入测试数据和期望值。


[3] 训练 神经网络
    首先通过编写的程序获取训练数据。在java程序的12x10的输入框体中绘制字母,右上角的文本框会生成相应的大小为120的一维整形数组作为输入数据,用分号分隔。每次输入作为单独的一行。由于本程序要区分A、B、C、D四个字母,所以期望值是一个长度为4的数组。现在规定A对应为“1;0;0;0”,B对应“0;1;0;0”,C为“0;0;1;0”,D为“0;0;0;1”,并把这些结果添加到对应的每行输入数据的后面。在两个FileInput中设置输入文件为刚刚建立的数据文件,并设置训练数据是从第1行到第120行,训练数据是从第121行到的124行。
    打开控制面板,设置学习速率为0.7,用所用的35条记录训练10000次。点击【run】开始训练。控制面板上会显示训练的进度和收敛情况。到了400次的时候,系统的误差已经很小了(0.002260),可以点击pause来停止训练。如果权值参数选择不合理的话有可能造成网络不能收敛。这时可以选择【control】->【randomize】,重新随机生成初始的权系数。


[4] 把完成训练的 神经网络 移植到程序中
    为了在程序中使用训练好的 神经网络 ,可以把利用java的序列化功能把完成训练的网络输出到文件中,然后在程序中读取这个文件,重新生成 神经网络 对象。选择【file】->【export neuralNet…】,把当前 神经网络 保存到文件中去。然后就可以在程序中使用了。

下面是从文件中读取 神经网络 的 代码 :
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:/work/homework/ANN/final/3.snet"));
Object o = ois.readObject();
System.out.println("o is " + o);
ois.close();
NeuralNet net = (NeuralNet) o;
    然后在程序中就可以使用了。每次用户绘制的数据转换成120的一维数组作为输入,然后 神经网络 进行计算并输出一个长为4的向量作为输出。

五.测试
    绘制了9次A、B、C和8次D共35个记录作为输入数据,训练了10000次,然后输出 神经网络 。用该 神经网络 进行识别,发现对于与训练数据相似的输入,识别的准确率很高,但是对和原来的训练数据差别较大的输入,程序可能会发生误判。为了提高准确率,需要增加样本的数量和覆盖面。

六.高级特性
    joone还有很多的高级特性。它支持多种处理层(linear, sigmoid, tanh, logarithmic, context , delay, nested),多种连接方式(full synapse,direct synapse,delayed synapse,sanger synapse),还提供了一系列的工具以及script语言来帮助处理数据和分析结果。灵活的运用joone,可以迅速的开发各种 神经网络 。

上一页12下一页

上一篇:粒子群算法简介
下一篇:BP神经网络模型
精选推荐
美国Natilus公司试飞水上无人货机 设计简单成本降低
美国Natilus公司试飞水上无人货机 设计简单成本降低

[2017-12-28]  Natilus创业公司成立于2014年,其梦想是建造大型无人机,以半价提供比船舶快得多国际货运。在十二月份,Natilus计划在旧金山湾测试一个9米翼展的小型原型无人机的水上滑行能力......

[2018-01-26]  纽约时报的报道,德国的研究人员已经开发出一种长约七分之一英寸的机器人,首先看起来不过是一小块橡皮条。然后它开始移动。机器人走路,跳跃,爬行,滚动和游泳。它甚至爬出......

MIT用深度学习处理3D点云数据 应用于无人汽车等领域
MIT用深度学习处理3D点云数据 应用于无人汽车等领域

[2019-10-23]  如果你见过自动驾驶汽车,也许会对车顶上那个一直在旋转的圆柱体感到好奇。这是一个雷达传感器,无人驾驶汽车依靠它在现实世界中进行导航。 ...

谷歌《Nature》发论文称实现量子霸权 18亿倍速碾压世界最强超算
谷歌《Nature》发论文称实现量子霸权 18亿倍速碾压世界最强超算

[2019-10-23]  谷歌坚称自己已经取得了量子霸权——这标志着计算研究领域的一个重要里程碑。谷歌首次发布声明是在今年9月,虽然遭到竞争对手的质疑,但就 ...

机器人灵巧手将成为智能机器人的下一个重大突破
机器人灵巧手将成为智能机器人的下一个重大突破

[2018-01-25]  计算机科学教授兼东北地区助手机器人实验室负责人罗伯特·普拉特(Robert Platt)说:“机器人手操作是下一步要解决的问题。想象一下,一个机器人可以在现实世界中用手去做事......

MIT研制出可以像植物一样生长的机器人
MIT研制出可以像植物一样生长的机器人

[2019-11-09]  麻省理工学院开发了一种新型机器人,这种机器人可以本质上自我延伸,其生长方式与植物幼苗向上生长的方式惊人相似。值得注意的是,研究人员 ...

深度神经网络揭示了大脑喜欢看什么
深度神经网络揭示了大脑喜欢看什么

[2019-11-06]  爱吧机器人网编者按:近日,《自然-神经科学》发表了一篇论文,研究人员创建了一种深度人工神经网络,能够准确预测生物大脑对视觉刺激所产 ...

亚马逊CEO杰夫·贝佐斯操控巨型有人驾驶机器人(巨型机甲)
亚马逊CEO杰夫·贝佐斯操控巨型有人驾驶机器人(巨型机甲)

[2017-03-21]  近日,亚马逊CEO杰夫·贝佐斯实现了每一个6岁儿童都会有的梦想,他控制了一个巨大的机甲机器人。据国外媒体Verge报道,前天(3月19日),贝 ...

本周栏目热点

飞桨火力全开,重磅上线3D模型:PointNet++、PointRCNN!

[2020-03-26]  11 年前的「阿凡达」让少年的我们第一次戴上 3D 眼镜,声势浩大的瀑布奔流而下,星罗棋布飘浮在空中的群山,无一不体现着对生命的敬意, ...

神经网络结构在命名实体识别(NER)中的应用

[2018-01-17]  近年来,基于神经网络的深度学习方法在自然语言处理领域已经取得了不少进展。作为NLP领域的基础任务—命名实体识别(Named Entity Recognition,NER)也不例外,神经网络结......

从基础概念到数学公式,这是一份520页的机器学习笔记(图文并茂)

[2018-06-19]  近日,来自SAP(全球第一大商业软件公司)的梁劲(Jim Liang)公开了自己所写的一份 520 页的学习教程(英文版),详细、明了地介绍了机器学习中的相关概念、数学知识和各......

50行代码玩转生成对抗网络GAN模型!(附源码)

[2018-07-30]  本文为大家介绍了生成对抗网络(Generate Adversarial Network,GAN),以最直白的语言来讲解它,最后实现一个简单的 GAN 程序来帮助大家加深理解。...

深度神经网络揭示了大脑喜欢看什么

[2019-11-06]  爱吧机器人网编者按:近日,《自然-神经科学》发表了一篇论文,研究人员创建了一种深度人工神经网络,能够准确预测生物大脑对视觉刺激所产 ...