NetBeans神经网络入门教程_第1页
NetBeans神经网络入门教程_第2页
NetBeans神经网络入门教程_第3页
NetBeans神经网络入门教程_第4页
NetBeans神经网络入门教程_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、NetBeans神经网络入门教程NetBeans Platform 是一个通用的 Java Swing 应用程序框架,它提供了一组 GUI 组件和一个模块系统,用于开发自定义桌面应用程序。当然,NetBeans Platform 上最著名的应用程序是 NetBeans IDE,但在 NetBeans Platform 展示中也可以看到许多其他示例。Neuroph Studio 是一个在 NetBeans Platform 和 Neuroph Framework 上构建的 Java 神经网络开发环境。它是针对神经网络开发定制的类似于 IDE 的环境。Neuroph Studio 是位于 Neur

2、oph Framework 之上的 GUI。Neuroph Framework 是一个功能齐备的 Java 框架,提供用于构建神经网络的各种类。除了提供易于 使用的神经网络向导和工具之外,Neuroph Studio 还集成了 NetBeans IDE 中的基本 Java 开发模块,因此开发人员可以在同一环境中基于神经网络创建、测试和部署各种 Java 组件。以前,开发人员通常需要两个应用程序:一个用于神经网络开发,一个用于 Java 开发。神经网络属于人工智能(机器学习技术), 适用于诸如识别、预测、分类和控制之类的定义不明确的问题。本文将介绍如何创建一些用于分类的 Java 神经网络。注意

3、,Neuroph Studio 还支持图像识别、文本字符识别和手写字母识别,这些功能将在以后的文章中介绍。注意:如果要安装 Neuroph Studio 和 Neuroph Framework 以尝试本文中介绍的示例,请下载 Neuroph Framework 和 Neuroph Studio(适用于 Microsoft Windows、Linux 或 Mac,具体取决于您系统所运行的操作系统)。使用 Neuroph Studio 构建神经网络的简要概述在介绍如何针对实际问题创建和使用神经网络之前,我先简要地说明一下什么是神经网络,并提供一些适用于神经网络工作方式的一般原则。神经网络是模仿人脑

4、工作方式的计算模型。尽管它们是非常简化的模型,并且基于人脑工作方式的已知原理,但它们展现了一些非常有趣的特性,例如学习、归纳和联想功能。此外,它们还擅长处理噪声数据或不完整数据。神经网络是图形式结构,包括一组被称作神经元 的互连节点。每个神经元都具有输入端和输出端,通过输入端从其他神经元(连接到其输入端)接收输入,通过输出端将输出发送到其他神经元(连接到其输出端)。神经元的互连方式决定了神经网络架构的类型。除了神经元之间的连接模式之外,网络行为由神经元内部的处理和所谓的连接权重 决定。连接权重是与神经元之间的连接关联的数值,通过使用相应的算法(称为学习规则)调整这些值,我们可以调整网络行为。典

5、型的神经元处理包括计算神经元输入和连接权重的加权总和,然后将该值提供给某个函数(通常使用 step、sigmoid 或 tanh 函数)。该函数的输出表示神经元的输出。无论您要创建常见类型的神经网络还是自定义神经网络,Neuroph Framework 都提供了所有这些现成的神经网络组件。Neuroph Studio 还提供了一些演示神经网络基本原理的示例。基本神经元示例基本神经元示例演示了单个神经元的基本组件和处理。1. 要打开基本神经元示例,在 Neuroph Studio 中选择 File New Project Samples Neuroph Basic Neuron Sample。图

6、 1. 创建基本神经元示例新项目这个基本神经元模型包括以下组件: 两个输入 x1 和 x2 以及对应的权重 w1 和 w2。 一个输入函数,它使用以下公式计算加权总和:s = (x1*w1) + (x2*w2)。 一个传递函数,它将加权总和作为输入,使用简单的 step 函数计算神经元的输出。如果加权总和大于零,则函数输出 1;否则,输出 0。图 2. 基本神经元示例2. 通过更改输入和权重值尝试运行该示例并使用神经元,然后单击 Calculate output 按钮。在学习过程中,自动调整神经元的权重以实现期望的行为。这是人工神经元工作的基本原理,但根据神经网络类型的不同还有许多变化。多层感

7、知器 (MLP) 网络是一种常用于多种不同类型问题的神经网络类型。该网络包括数层神经元(至少三层),其中一层中的每个神经元都连接到下一层中的每个神经元。用于该类型网络的常见传递函数是所谓的 sigmoid 函数。图 3 中显示了该类型网络的架构。图 3. 多层感知器网络架构此类型的网络可用于各种机器学习任务,例如识别、预测、估算等。Neuroph Studio 提供了一个展示多层感知器网络如何用于分类问题的示例。多层感知器分类示例该示例显示如何使用多层感知器网络学习复杂的分类任务。1. 要运行该示例,在 Neuroph Studio 中选择 File New Project Samples N

8、europh Multi Layer Perceptron Classification Sample,如图 4 中所示。图 4. 多层感知器网络示例2. 通过单击特性空间 (x1, x2) 创建一个分类任务。单击左键将创建红点,单击右键将创建蓝点。每个点表示一个具有两个特性(x1 和 x2)的项。这些项表示神经网络应该以这样一种方式学习的数据:对于给定输入(x1 和 x2),该方式可以确定输入属于蓝色类还是红色类。图 5. 多层感知器网络示例的数据输入特性的数量对应于神经网络中输入神经元的数量,而分类类的数量通常对应于输出神经元。在该示例中,由于我们只有两个类,因此我们仅使用一个输出神经元,

9、它针对蓝色类输出 0,针对红色类输出 1。我们还需要设置隐藏神经元(以及层)的数量,这取决于分类的复杂程度。隐藏神经元是指输入层和输出层之间的神经元,MLP 网络可以有一个或多个隐藏层。3. 在对应的域中,输入隐藏层中的神经元数量。数字之间用空格分隔。对于这个简单示例,五个隐藏神经元足够了。除了隐藏神经元的数量,我们还可以设置一些学习参数,例如 Learning Rate、Momentum、Max Error 以及 Max Iterations,这些参数是用于反向传播(MLP 的学习算法)的典型设置。就现在来说,保留这些参数的默认值,但记住,对于不同的问题,某些其他值可能会产生更好的结果。这些

10、值始终在 0, 1 范围内。4. 单击 Train 按钮。将创建神经网络并启动学习过程。稍后,您可以在 Multi Layer Perceptron Classification Sample 选项卡中看到结果,如图 6 中所示。图 6. 多层感知器网络示例的结果图 6 显示了神经网络如何查看给定数据以及如何解释提供给神经网络的任何其他数据。我们还可以通过查看 Total Network Error Graph 选项卡查看网络如何学习给定数据。该图(如图 7 中所示)显示了学习规则如何调整网络权重以尽量减少错误分类(网络错误)。图 7. Total Network Error Graph 选项

11、卡我们还可以在 MlpSampleNet1 选项卡中查看神经网络本身,如图 8 中所示。图 8. MlpSampleNet1 选项卡中显示的神经网络注意,在该图中,输入层中有三个神经元,隐藏层中有六个神经元。两个层中都有的一个神经元是偏差神经元,它始终输出 1。偏差神经元提供其他内部输入。上面的示例是可能实现的最简单示例,我们不需要针对它使用神经网络。但是,我们使用该示例只是为了介绍使用神经网络时的基本原理。神经网络实际上可以执行复杂的分类,如图 9 中所示的分类。图 9. 复杂分类示例您可以体验不同的分类问题和学习设置,以了解神经网络如何工作。训练神经网络之后,可以通过单击 Neuroph

12、Studio 中的 Save 按钮将该网络序列化为一个 Java 类。然后,可以使用 Neuroph Framework 将其部署到应用程序中。下面是示例代码:/ load serialized network from fileNeuralNetwork nnet = NeuralNetwork.load(MySavedNeuralNetwork.nnet);/ set network input which we want to classifynnet.setInput(0.5, 0.9);/ process input/calculate networknnet.calculate()

13、;/ get networkoutput/classification resultdouble output = nnet.getOutput();注意:您可以创建一个 Java 项目,然后直接从 Neuroph Studio 运行该代码,但您需要在项目中引用 neuroph-2.5.jar 文件以便能够使用该代码。该 jar 文件是一个 Neuroph Framework 类库,该文件以及完整的 Neuroph Framework 文档和源代码可通过下载 neuroph-2.5b.zip 文件获得。创建和训练自定义神经网络前面的示例是使用 Neuroph Studio 的分类示例创建的。但

14、是,您可以使用向导轻松创建和训练自定义神经网络。要创建神经网络并向该网络传授分类问题,可以执行以下任务: 创建一个新的 Neuroph Studio 项目。 使用 New Neural Network Wizard 创建一个神经网络。 使用 New Training Set Wizard 创建一个训练集。 使用创建的训练集训练神经网络。下面是具体步骤。1. 首先,通过选择 File New Project Neuroph Neuroph Project 创建一个新的 Neuroph Studio 项目。图 10. 创建新的 Neural Studio 项目2. 输入项目名称,然后单击 Fini

15、sh。图 11. 指定项目名称3. 通过选择 File New File Neuroph Neural Network 创建一个多层感知器神经网络。图 12. 创建多层感知器网络4. 将神经网络类型设置为 Multilayer Perceptron 并输入网络名称。图 13. 设置网络类型系统将要求您设置网络参数。5. 输入图 14 中所示的网络参数值,然后单击 Finish。图 14. 设置网络参数这将创建神经网络,如图 15 所示。图 15. 创建了神经网络6. 通过选择 File New File Neuroph Training Set 创建训练集。图 16. 创建训练集7. 指定训练

16、集设置,如图 17 所示。对于该示例,我们将使用 Iris 分类数据集,这是众所周知的分类问题数据集。简而言之,我们具有鸢尾花的四个属性和三个类,并且分类有点棘手。有关更多详细信息,请参阅此 Wikipedia 文章。注意,属性的数量对应于网络输入的数量,输出的数量对应于分类类。图 17. 指定训练集设置8. 从此标准化文件中导入 Iris 数据集,使用制表符分隔值 (TSV)。在此我们使用标准化的数据集,这只是意味着将原始值缩放到 0, 1 区间。图 18. 导入 Iris 数据集训练集将如下所示:图 19. 示例训练集9. 要训练网络,单击神经网络将其打开,从训练集列表中选择 Iris 训练集,然后单击 Train 按钮。10. 使用 Set Learning Parameters 对话框中的默认学习参数,然后单击 Train 按钮。图 20. 使用默认学习参数在 Total Network Error Graph 选项卡中,您可以观察到在学习过程中如何使网络错误逐渐减至最少。图 21. Total Ne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论