MATLAB 2016b--神经网络工具箱中图形用户界面的使用

MATLAB 2016b–神经网络工具箱中图形用户界面的使用

在干活的过程中整理下来的,希望对大家有帮助。
人工神经网络工具箱是MATLAB环境下开发出来的众多工具箱之一,它以人工神经网络理论为基础,应用MATLAB语言构造典型神经网络的算法、函数和应用程序,并针对特定的网络结构进行网络建立、训练、可视化和仿真。
MATLAB中的神经网络工具箱可以利用MATLAB编程语言构造出许多经典神经网络的激励函数,如S型、线性、竞争层、饱和线性等激励函数,使设计者对所选定网络输出的计算,转变为对激励函数的调用。另外可以根据各种典型的修正网络权值的规则,再加上网络的训练过程,利用MATLAB编写出各种网络设计和训练的子程序。网络的设计者可以根据自己的需要调用工具箱中关于神经网络设计与训练的程序,使自己从烦琐的编程中解脱出来,提高效率和质量。
MATLAB中提供了两种神经网络工具箱的使用方式,用户可随意选择。一种是用户利用神经网络工具箱函数直接在Editor/Debugger窗口中编写.m脚本文件并执行;另一种是使用GUI进行神经网络的设计与应用。
GUI是神经网络工具箱提供的人机交互界面,由窗口、光标、按键、菜单、文字说明等构成。用户可以通过一定的方法(如鼠标或键盘)选择、激励这些图形对象,实现某种特定的功能,如计算、绘图等,能够在很大程度上提高工作效率。GUI的设计是为了使用户可以更方便地使用MATLAB的神经网络工具箱,它是一个独立的窗口,即Network/Data Manager窗口,且相对于MATLAB命令窗口是独立的,但可以将GUI得到的结果数据导出到命令窗口,也可以将命令窗口中的数据导入到GUI窗口中。
我用的是MATLAB 2016b,下面的介绍也是以2016b为例的。另外,2016b版神经网络工具箱的GUI不但可以通过选择神经网络模型来创建神经网络,还可以通过选择需要实现的功能来创建神经网络(在小标题6里介绍了),这一改进使得工具箱更适合对神经网络模型特点不了解的初学者。
如果要使用图形用户界面,只需在MATLAB 2016b中命令行输入“nntool”,就会出现神经网络工具箱的主界面,主界面由6个部分组成:系统的输入数据、系统的期望输出、网络的计算输出、网络的误差、已经建立的神经网络实例以及数据的导入和网络模型的建立。
下面我通过一个实例演示全过程,介绍GUI各部分的功能以及用GUI进行神经网络设计和分析的基本步骤和方法。为了逼近一个正弦函数,现通过GUI设计一个前向BP网络。该BP网络的隐含层神经元数目为10个,输入层神经元的传递函数为S型正切函数,隐含层神经元的传递函数为纯线性函数,网络训练函数设定为trainlm,待近似的原始正弦信号为f(x)=sin(πx) 。
由于新版工具箱GUI窗口相较以前的版本有所不同,这里对GUI主窗口的各个区域及按钮的作用、输入输出等向量的设置、数据的导入导出等GUI数据处理及网络的建立、训练、仿真都做了较为详尽的介绍。

1.打开GUI编辑窗口

在MATLAB命令行窗口中输入nntool后按回车键,即打开GUI编辑窗口图1所示。由图可见该窗口可以分为八个部分,上面的显示区域及底部各类按钮。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第1张图片
图1 Network/Data Manager窗口
其各区域和按钮的含义如下:
Input Data区域:显示指定的输入数据
Output Data区域:显示网络对应的输出数据
Target Data 区域:显示期望输出数据
Error Data 区域:显示误差
Input Delay States区域:显示设置的输入延迟参数
Layer Delay States区域:显示层的延迟状态
Networks区域:显示设置网络的类型
Help按钮:Network/Data Manager窗口有关区域和按钮的详细介绍
Close按钮:关闭Network/Data Manager窗口
Import按钮:将MATLAB工作空间或者文件中的数据和网络导入GUI工作空间
New按钮:创建新网络或者生成新的数据
Open按钮:打开选定的数据或网络,以便查看和编辑
Export按钮:将GUI工作空间的数据和网络导出到MATLAB工作空间或文件中
Delete按钮:删除所选择的数据或者网络

2.导入数据

新版神经网络工具箱需要首先导入输入数据与目标输出数据,在主界面Neural Network/Data Manager窗口中单击“Import”按钮,弹出一个Import to Network/Data Manager 窗口,如图2所示。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第2张图片 图2 Import to Network/Data Manager窗口
可以在左侧Source单选框中选择从MATLAB工作空间导入数据或者加载文件中的数据,这里选择从工作空间导入。首先在MATLAB工作空间中输入如下语句来产生输入向量P和目标输出向量T:

P=[-1:0.05:1];
K=[-1:0.05:1];
T=sin(pi*K);

此时Import to Network/Data Manager 窗口中的Select a Variable列表框就显示出了当前工作空间中的所有变量,从中选择输入向量P,并在Import As列表框中选中Input Data,单击“Import”按钮,再选择目标输出向量T,并在Import As列表框中选中Target Data,单击“Import”按钮,就完成了输入输出数据的导入。点击“Clos按钮返回Neural Network/Data Manager主窗口,可以看到主窗口的输入输出区域已经发生了变化,如图3所示。在主窗口中双击变量P,就可以查看变量的内容,同理变量T也一样能查看到,分别如图4和图5所示。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第3张图片
图 3 导入数据后的nntool主界面
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第4张图片
图4 网络输入向量P
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第5张图片
图5 网络的期望输出T

3.创建BP网络

在Neural Network/Data Manager主窗口,点击“New”按钮,在弹出的Creat Network or Data窗口中选择Network选项,开始创建网络。根据要求在窗口中修改相应的参数:在Name 文本框中输入所创建的网络名称,将该网络命名为Tnet。在Network Type的下拉框中选择需要创建的网络类型,为Feed-forward backprop。在Input Date和Target Date的下拉框中选择相应的导入数据。Training function下拉框用于设置该网络训练函数的类型,这里选择TRAINLM。在Adaption learning function下拉框中设置网络的学习函数LEARNGDM,网络的性能函数Performance function取默认值MSE,网络的层数Number of layers输入2,表明所设计的网络有一层是隐含层。最后设置网络各层的传递函数和神经元的数目。在Properties for下拉框中选择Layer1,表示接下来设置隐含层的传递函数和神经元的数目。在Number of neurons 文本框中输入10,表示隐含层由10个神经元组成。在Transfer Function下拉框选择传递函数类型为TANSIG,如图6(a)所示。然后在Properties for下拉框中选择Layer2,表示接下来设置输出层属性,输出层的Number of neurons 文本框中不能输入数字,网络自动默认为1,在Transfer Function下拉框选择传递函数类型为PURELIN,如图6(b)所示。单击“View”按钮可以看到所建立BP神经网络的结构,如图7所示。单击右下角的“Create”按钮,就完成了神经网络的设置。点击“Close”按钮返回Neural Network/Data Manager主窗口,可以看到主窗口的神经网络区域已经发生了变化,如图8所示。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第6张图片
图6(a)网络创建窗口-传递函数类型TANSIG
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第7张图片
图6(b)网络创建窗口-传递函数类型PURELIN
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第8张图片
图7 Tnet的网络的结构
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第9张图片
图8 创建网络后的nntool主界面

4.训练网络

在Neural Network/Data Manager窗口中选中生成的BP神经网络Tnet,则“Open”、“Delete”按钮被激活。单击“Open”按钮,将弹出一个新的窗口如图9所示。该窗口用于设置网络自适应、仿真、训练和重新初始化的参数,并执行相应的过程。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第10张图片
图9 Network:Tnet窗口
点击Train选项卡后做相应的设置即可进行神经网络的训练:在Training Info选项下,选择输入Inputs为P,期望输出Targets为T,如图10所示。在Training Parameters选项下,设置训练步数epochs为50,目标误差goal为0.01,其它参数采用默认值,如图11所示。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第11张图片
图10 设置训练数据
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第12张图片
图11设置训练参数
参数修改完毕后,单击Network:Tnet窗口右下角的Train Network按钮,就开始了网络训练,训练完成后会有一个结果信息界面,如图12所示。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第13张图片
图12 网络训练结果信息
点击Performance,Training State以及Regression分别出现下面的界面,图13显示网络训练误差随训练次数的变化情况,图14显示训练数据的梯度、均方误差以及验证集检验失败的次数随训练次数的变化情况,图15分别显示了训练集、验证集、测试集和全集的回归系数,回归系数越接近1表示模型训练的性能越好。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第14张图片
图13 网路训练性能
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第15张图片
图14 网络训练状态
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第16张图片
图15 网络训练的回归分析

5.网络仿真

通过网络仿真,可以验证训练后的神经网络对信号的逼近效果。在Network:Tnet窗口中,单击Simulate,在Inputs下拉菜单中选择输入量P,同时将网络仿真输出Outputs变为Tnet-OutSim,以区别于训练时的输出Tnet-outputs。单击“Simulate Network”按钮,回到Neural Network/Data Manager窗口,就会看到在Outputs区域有一个新的变量:Tnet-OutSim,如图16。双击变量名Tnet-OutSim,同样会弹出一个新的窗口,显示出对应输入向量P的网络输出值,在图17的主界面上点击“Export”按钮,就能在Output Data中选择想要查看、保存的数据,将其导出到MATLAB的工作空间,如图18所示。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第17张图片
图16网络仿真后的nntool主界面
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第18张图片
图17 导出数据
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第19张图片
图18(a) BP网络期望输出与实际输出结果对比–网络实际输出
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第20张图片
图18(b) BP网络期望输出与实际输出结果对比–网路期望输出
由图18可知,BP网络的实际输出值与网络的期望数据相比是比较接近的,由此可见,所建立的BP神经网络基本完成了非线性函数逼近的功能。

6.另一种创建网络的方式

新版的神经网络工具箱还增加了另外一种创建BP网络的方式,使用者不必深入了解每种神经网络模型的特点及适用的问题,仅需根据所要解决的问题选择不同的应用程序即可,这里同样以逼近正弦函数为例,简单说明一下其基本操作步骤。
在MATLB工具条APP选项卡下选择,如图19所示。弹出如图20所示的nftool应用程序界面。
来自我的MATLAB截图
图19 在MATLAB中打开nftool应用程序
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第21张图片
图20 nftool应用界面
在图20左侧文本框对Neural Fittng app进行了简单介绍,包括适合解决的问题、工具箱给出的例子以及该app的流程及输出结果。图右侧的文本框对该app使用的神经网络进行了介绍,它对神经网络的层数、每层的激励函数、网络训练函数都做了规定,设计人员不需要熟练掌握工具箱中的各种函数,也能方便的建立和训练网络。点击“Next”按钮,进入到输入数据和期望输出数据的导入界面,同样选择从MATLAB工作空间中导入数据,如图21所示。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第22张图片
图21导入数据界面
点击“Next”按钮,弹出如图22所示的界面,该界面用以设置训练数据、验证数据和测试数据占全部数据样本的比例,默认是随机选取70%的样本作为训练数据、15%的样本作为验证数据、15%的样本作为测试数据,也可以根据实际情况进行调整,这里选取默认值。设置完成后,点击“Next”,进入隐含层神经元的设定界面,如图23所示。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第23张图片
图22设置验证数据及测试集样本
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第24张图片
图23 隐含层设置界面
在图23中,上边的Hidden Layer文本框用来设置隐含层神经元的个数,默认值是10,可以根据实际情况进行调整,这里采用默认值。根据设置的参数,图23下方的文本框给出了神经网络的具体结构,检查无误后点击“Next”按钮弹出Trian Network窗口,进入训练阶段。点击新窗口Train Network文本框的下拉选项卡可以选择网络训练函数,如图24所示,这里选择默认算法Leveberg-Marquardt。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第25张图片
图24网络训练界面
选择完成后点击“Train”按钮,开始对网络进行训练,训练结果如图25右侧所示,分别给出了训练数据、验证数据、测试数据的MSE值和R值,并对这两个性能指标进行了说明,其中MSE值越小表示实际输出与目标输出直接的均方差越小,R值越接近1表示网络模型拟合的越好。如果所得到的模型不能满足预期的需求,则需重复上述的步骤直至能够得到预期的精确度,如果所得到的模型满足需求,点击“Next”进入Save Result界面,将最终的得到的各种数据以及其拟合值保存到MATLAB工作空间,如图26。
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第26张图片
图25 网络训练后界面
MATLAB 2016b--神经网络工具箱中图形用户界面的使用_第27张图片
图26 保存数据
GUI是神经网络工具箱提供的人机交互界面,它引导工程人员一步步地建立和训练网络,避免了代码的编写过程。对于初学者,建议不要开始就使用GUI来解决实际问题,因为GUI中的一些功能只能在熟练掌握了工具箱中的大部分函数后才可以正确使用。因此,最好的方式是首先利用编写代码的方式来学习神经网络工具箱,掌握了各种函数的意义及使用注意事项后,就可以利用GUI方便快捷地来解决实际问题了。

你可能感兴趣的:(神经网络工具箱,神经网络,机器学习)