基于2nsoftEditor快速构建神经网络应用

yufeiyang_1 2006-01-17 03:02:03
2nsoftEditor神经网络建模工具是一个可视化的神经网络建模应用开发平台,她基于可连接组件的模块化结构实现,这些可连接组件可用来扩展建立新的学习算法和神经网络结构。工具简单易用,功能强大,用户无需编写一行代码就能够在极短的时间内搭建一个企业级的神经网络应用,她尤其适合科研人员进行科学研究。同时她提供多种输入、输出接口,可以作为大型企业应用的一个插件。
==== 示例:影响棉铃虫发生程度的神经网络模型 ====

1、示例说明:
影响棉铃虫发生程度的因素指标集序列由麦田1代幼虫量、6月降水天数、5月积温、6月积 温、5月相对湿度、5月降水天数和6月相对湿度等7个生态和生物因子构成,2代发生程度按照全 国植保站颁发的标准分级,并规定发生程度重、偏重、中、偏轻和轻分别赋值为0.9、0.7、 0.5、0.3和0.1。
在建立BP神经网络模型时,取1982~1991年的数据作为学习、训练样本,1992和1993年为试报样本。
本示例神经网络模型包含7个输入单元、1个输出单元和8个隐层单元。
准备样本数据如下:

2、神经网络建模
打开2nsoftEditor神经网络设计工具,在主界面中通过拖拉方式添加下图所示的图元,这样神经网络模型就建好了,2nsoftEditor会自动的随机设置连接的权系数。 当然这个网络目前还没有进行训练,没有任何实际的功能。

下面对设计器中的各图元说明如下:
① Excel输入 (NetData)
用于神经网络训练和测试所需的数据集,设置方法:鼠标选中该图元,右键弹出快捷菜单,点击<属性>,弹出下面的对话框:

因为该图元提供了神经网络所需的所有数据,故在选择数据行列上包含了所有有效的行和列,其它设置参考2nsoftEditor帮助文档说明。
② 规范化 (DeltaNorm)
在此对输入样本数据进行归一化处理,设置方法:鼠标选中该图元,右键弹出快捷菜单,点击<属性>,弹出下面的对话框:

说明:若输入最大/最小值设置为0,表示自动取相应节点的最大/最小值,这里选择列为1-7,表示只对输入节点进行归一化处理。
③ 输入连接器 (InputTrainConnector)
从<① Excel输入 (NetData)>中选择数据作为神经网络训练的输入样本集,设置方法:鼠标选中该图元,右键弹出快捷菜单,点击<属性>,弹出下面的对话框:

说明:要特别注意“是否激活”、“选择列”、“首行/末行”等属性的设置。
④ 输入连接器 (InputTestConnector)
从<① Excel输入 (NetData)>中选择数据作为神经网络测试的输入样本集,设置方法参见<④ 输入连接器 (InputTrainConnector)>。
⑤ 输入连接器 (OutputTrainConnector)
从<① Excel输入 (NetData)>中选择数据作为神经网络训练的输出样本集,设置方法参见<④ 输入连接器 (InputTrainConnector)>。
⑥ 输入切换 (InputSwitch)
故名思义,为两个输入文件之间的切换开关,设置方法:鼠标选中该图元,右键弹出快捷菜单,点击<属性>,弹出下面的对话框:

说明:在训练阶段,将活动输入设为:InputTrainConnector,在测试阶段,若活动输入设为InputTrainConnector,表示对训练样本进行测试,若活动输入设为InputTestConnector,表示对指定的测试样本进行测试。
⑦ Sigmoid (Input)
神经网络的输入层,应用一个 S 型传递函数到输入模式上,为建立神经网络中的隐层单元提供了一个很好的非线性元素。 S 型层可用在任意的神经网络上,它的输出平滑在 0 与 1 之间。注意:这里输入节点数设置为7。
⑧ Sigmoid (hidden)
神经网络的隐层,这里同样用到一个 S 型传递函数,这里设置隐层节点数为8,该值的具体确定需要由经验或反复试验得到。
⑨ Sigmoid (output)
神经网络的输出层,这里同样用到一个 S 型传递函数,这里输出节点数设置为1。
⑩ 训练 (Teacher)
神经网络训练层。
⑾文件输出 (TestResults)
用于神经网络测试时的输出,设置方法:鼠标选中该图元,右键弹出快捷菜单,点击<属性>,弹出下面的对话框:

注意:在训练阶段,必须将是否激活设置为False,而在测试阶段,该值设置为True。
3、神经网络训练
打开控制面板,设置学习率为0.7,动量常数为0.6,训练样本数为26,训练步数为40000次,是否训练设置为True,是否测试设置为False,是否指导设置为True。点击【运行】开始训练。控制面板上会显示训练的进度和收敛情况。到了15850次的时候,系统的误差已经很小了(0.006342751),可以点击暂停来停止训练。如果权值参数选择不合理的话有可能造成网络不能收敛。这时可以选择【工具】->【初始化】,重新随机生成初始的权系数。

4、神经网络测试
网络训练完成后,就可以对生成的网络模型进行测试了,测试时,需要将< ⑨文件输出(TestResults)>图元的是否激活属性设置为True。我们可以对训练样本进行测试<这时 ②输入切换(InputSwitch)的活动输入设置为InputData>,也可以产生新的测试样本来测试网络<这时 ② 输入切换(InputSwitch)的活动输入设置为TestInputs>,打开控件面析,设置测试样本数,训练步数为1次,是否训练设置为False,是否测试设置为True。点击【运行】开始测试,测试结果将自动输出到TestResults.txt文件中。

下图分别为对训练样本和测试样本(1992和1993)的测试结果,从数据分析,效果相当好。对于生成的新的测试数据,用该神经网络进行识别,发现对于与训练数据相似的输入,识别的准确率很高,但是对和原来的训练数据差别较大的输入,程序可能会发生误判。为了提高准确率,需要增加样本的数量和覆盖面。

5、高级应用(把完成训练的神经网络移植到第三方应用中)
为了在第三方应用程序中使用训练好的神经网络,可以把训练好的网络输出到文件中,然后在程序中读取这个文件,以实现对未知对象的预测。选择【文件】->【导出模型…】,把当前神经网络保存到文件中。然后就可以在程序中使用了。
下面是从文件中读取神经网络的代码:
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:/2nsoftEditor/sample/PreNet/PreNet.snet"));
Object obj = ois.readObject();
System.out.println("obj is " + obj);
ois.close();
NeuralNet net = (NeuralNet) obj;
然后在程序中就可以使用了。每次用户将长度为7的一维数组作为输入,然后神经网络进行计算并输出一个长为1的向量作为输出 。
产品信息详见:
http://www.2nsoft.com.cn/product/productInfo.html
http://www.2nsoft.cn
http://bbs.2nsoft.cn
...全文
55 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

256

社区成员

发帖
与我相关
我的任务
社区描述
其他产品/厂家
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧