-
2021-09-10 10:16:59
matlab神经网络工具箱
matlab拥有着很多实用的工科计算工具,其中就包含了神经网络工具箱。利用matlab,可以很容易地搭建一个实用的神经网络。
启动神经网络工具箱
nnstart
输入后,会出现窗体,点击对应的窗体即可启动相关的训练程序。
其中包含
- nftool(Neural network fitting tool,神经网络拟合工具) 常用于线性拟合
- nprtool(Neural network pattern recognition tool,神经网络模式识别工具) 常用于分类问题(有标签)
- nctool(Neural network classification or clustering tool,神经网络分类与聚类工具) 用于聚类问题(无标签)
- ntstool(Neural network time series tool,神经网络时序拟合工具) 带有记忆功能的拟合工具
启动后按照指引,可以执行对应的功能。
神经网络拟合数据
据证明,简单的神经网络可以拟合任何实际的函数。
LM算法(Levenberg-Marquardt)适合于大多数的问题,但对于有小噪声干扰的数据,贝叶斯正则化算法(Bayesian Regularization)可以通过长时间的运算以获得更好的拟合效果。对于大规模的问题,量化共轭梯度法(Scaled Conjugate Gradient)更推荐适用,因为其梯度计算比实用雅各比行列式能节约更多的内存。
神经网络模式分类
神经网络在分类问题上也很实用。
对于分类问题来说,其数据格式应该是这样的:
- 二分类
inputs = [0 1 0 1; 0 0 1 1]; targets = [1 0 0 1; 0 1 1 0];
- 三分类
inputs = [0 0 0 0 5 5 5 5; 0 0 5 5 0 0 5 5; 0 5 0 5 0 5 0 5]; targets = [1 0 0 0 0 0 0 0; 0 1 1 1 1 1 1 0; 0 0 0 0 0 0 0 1];
输入为MxN维矩阵,对于K分类问题,输入应该为MxK维矩阵。对输出来说,每个分类的列都应该只包含一个1,其余为0。
自组织映射聚类
聚类问题是神经网络的一个出色的应用,通过相似性对数据进行分组。
动态时序神经网络
动态神经网络适用于时序预测。
网络参数
为了验证网络效果,我们需要对生成的网络参数进行分析。
Performance(误差函数)
- mse(Mean squared normalized error performance function,归一化均方误差函数) 表现数据与预测值直接的距离和,越小越好。
Regression(相关性)
表现为系统输出与数据之间的关联性,越接近于1表现越好。
Training State(训练状态)
- Gradient梯度
- Mu学习率
- Validation Checks失败检验次数
Error Histogram(误差直方图)
横坐标为目标值-输出值,纵坐标为出现的次数。
Confusion(混乱型)
表现不同数据集中的分类的精确性,横坐标为目标分类,纵坐标为系统训练的输出分类。
红色表示错误分类,绿色表示正确分类。高亮块表示当前训练得到的精确度,右下角表示总体精确度。
Receiver Operating Characteristic(认知工作特性)
表现不同数据集中的ROC特性,对于完美的测试结果,应该贴合在左上边框,表现为全敏感性和全特异性。
参考文献
本文首载自RuaBlog,欢迎访问我的博客。
matlab官方文档
更多相关内容 -
介绍一些网络工具
2022-02-18 13:23:341、网络扫描工具: fping: 类似于ping命令的使用方式,此工具可以对目的地地址发送ICMP echo消息。 Nessus:漏洞扫描工具,功能相当强大,支持了商业版本。 nmap:功能丰富的网络安全工具,而且支持了更多的互联网...1、网络扫描工具:
fping: 类似于ping命令的使用方式,此工具可以对目的地地址发送ICMP echo消息。
Nessus:漏洞扫描工具,功能相当强大,支持了商业版本。
nmap:功能丰富的网络安全工具,而且支持了更多的互联网安全工具,资料丰富,文档齐全。很多系统安全人员,管理人员使用其工具。
Zenmap:Nmap界面管理程序,方便用户快速扫描测试。
Hping2 : TCP/IP的命令行工具,帮助分析数据包的工具,使用方便,简单。如果学习TCP/IP的话,是非常好的学习工具。
snmpwalk:支持SNMP协议的基本工具,可以检测各种支持SNMP的网络终端设备。snmpwalk 可以获取到设备的snmp参数设置。
SNSscan:和snmpwalk一样,支持window环境,可以扫描支持SNMP协议的设备。
SuperScan:免费Windows扫描工具,不开源。
SigPloit:可以测试SS7和SIP等信令的工具,笔者使用它测试过asterisk/SS7集成环境。
VLANping:网络ping工具,可以支持VLAN标签检测。此工具需要源代码编译安装。
metasploit-framework:专业的渗透测试工具,包括了SIP渗透测试的模块,漏洞测试,其功能非常强大,支持GUI和报表功能。
SIPPTS:此工具包括一系列SIP渗透测试套件,包括扫描,密码破解,请求响应收发,漏洞测试等工具。
Mr.SIP: 基于SIP的监控和DDos 攻击工具, 支持网络扫描,网络枚举,DDOS仿真,密码破解,信令修改等子模块。
RuaaSIP: 支持Windows操作系统的扫描工具,扫描服务器地址和端口,需要联系开发人员获取安装包。2、网络枚举工具:
netcat: 此工具可以通过UDP/TCP获取用户的网络资源,同时可以和脚本语言集成来测试系统的其他资源信息。
SiVuS:此工具是一个内网的SIP扫描工具,可以扫描内网的相关SIP终端。
sipsak:此工具是一个SIP扫描,压力测试工具,开发人员和系统管理员可以使用此工具对目的地地址发送option消息,发送洪水攻击消息,解析响应消息等功能。通过使用,笔者认为,它是一个比较实用功能相对比较丰富的关于SIP测试的工具。
SIPSCAN:通过名字就可以猜出来其作用。此工具是专门用来扫描SIP网络的工具,适用于比较大型的网络用户环境中,可以扫描IPPBX,呼叫中心和SIP终端设备。当然,结合其相关开发的工具,可以实现认证的检测,监听,INVITE消息发送,分机扫描等强大的功能。
smap:扫描枚举网络设备的工具,可以检测到比较完整的网络设备状态,当然也包括了SIP终端和服务器端的设备状态。其工具分为管理员端和终端两种。3、拒绝服务攻击工具:
网络设备的拒绝攻击是攻击者常用的手段之一,攻击者使用的工具也很多。罗列一些常用的工具。
DNS Auditing tool:查询DNS服务消息,获取服务器的地址。
Internetwork Routing Protocol Attack Suite:一组渗透测试工具,检测网络环境的各种数据,包括protos,icmp工具等。
UDP Flooder:对UDP端口发送洪水工具的工具,用户需要联系开发人员下载。
UDP Flooder w/VLAN support:通过TAR文件下载,用户自己编译,通过命令行设置对VLAN的攻击设置。
Wireshark (formerly Ethereal):非常着名的免费网络工具,用户可以用来排查和分析网络数据,包括SIP,RTP,DTMF等。
SIPp:着名的SIP压力测试工具,可以对服务器端发送INVITE消息和语音流等功能。
Inviteflood:Linux命令行工具,可以对UDP/IP的SIP网络发送INVITE请求,形成洪水攻击数据环境。其工具也可以用来进行简单的压力测试,安装方便。
VulnVoIP:针对比较旧的AsteriskNOW版本创建的漏洞攻击工具,模拟漏洞攻击环境。通过此工具没有模拟一个漏洞攻击的安全环境。4、语音数据监听:
VOIP网络中,攻击者也可以使用工具对语音进行监听,盗取用户的SIP消息中的安全数据等攻击手段。比较常见的是获取用户的DTMF按键输入信息。
Angst:是一款基于libpcap和libnet开发的侦测工具,可以通过指定端口提取所有的TCP数据包payload。它也可以对所有网络的MAC地址发送数据消息。
Cain and Abel:此工具支持多种攻击和密码还原功能,也可以实现对端口的侦听。此工具可能已不能在官方网站下载,用户需要从第三方平台下载。
DTMF Decoder:此工具可以用来解析DTMF tone的数据包。是VOIP学习者了解DTMF的比较好的学习工具。一般情况下,攻击者可以对系统的DTMF录音,然后通过此工具解析出用户的按键音。如果攻击者登录系统以后,用户通过语音IVR输入的DTMF,可以通过系统录音提取出来,然后,攻击者可以通过此工具非常方便解析出系统用户的输入数字,例如银行账号密码,身份证等信息。
dsniff:此工具是一组工具集,可以实现多种方式的侦测,包括邮箱,网页,SSH等方面的攻击。
NetStumbler:针对WLAN检测到工具,可以侦测内网的WLAN终端设备。
Oreka:开源SIP录音工具,支持多种录音格式,包括G711/G722,,G729, Opus 等。
VoIPong:RTP侦测工具,可以提取SIP等其他协议的语音流,保存格式为WAV。
vomit:针对思科SIP电话的录音转换工具,文件转换后可以支持普通播放器播放。此工具好像也不再更新。5、网络和应用解析
通过一些攻击工具对某些设备进行攻击,从其设备相关接口也会反映出来。使用一些互联网解析侦测工具检查其状态也能够大概获知是否受攻击。
arpwatch:此工具可以对ARP进行检查,IP和MAC地址修改的检查。
ettercap:此工具是一款使用中间人攻击的套件工具。它通过DNS,ARP,DHCP等欺骗手段获取用户信息,并且支持界面和命令操作方式,使用比较方便。
fragrouter:一款渗透测试工具,它可以检测系统入侵,并且具有路由功能,能够转发攻击流量数据。
siprogue:此工具支持对SIP进行侦查的工具,包括SIP数据响应等监控。它也可以创建RTP流对媒体进行修改解析。攻击人员可以通过其工具进行对SIP实现调度转发,Proxy等功能。
XArp:高级入侵检测工具,支持windows和linux环境。6、服务干扰工具:
以下几个工具可以分别对IPPBX,UC系统或者SIP终端发送相关的请求消息,达到对目的地进行洪水攻击的目的。如果用户需要对某些特别的请求进行测试时,也可以通过大量发送请求数据来测试其稳定性。
INVITE Flooder: 此工具通过发送INVITE请求消息对目的地地址进行攻击,支持UCP/TCP 端口,支持发送数据包大小调整。用户可以通过服务器端或者SIP终端的响应消息来判断服务器被攻击后的状态。
RTP Flooder:此工具对RTP端口发送洪水攻击的数据包。当然,用户必须了解RTP的端口,SSID,时间戳等相关消息。
UDP Flooder:此工具主要针对一些网关设备进行攻击,一般可靠性,攻击者首先使用UDP Flooder 获得其端口信息,然后使用RTP flooder 或者INVITE工具进行攻击。
crcxflood:此工具可以支持对MGCP网关的测试,通过网关的IP地址对MGCP网关发送数据。
UDP Flooder w/VLAN support:UDP 测试工具,支持VLAN输入设置。
byeflood:发送SIP BYE 请求消息。
optionsflood:发送大量的SIP OPTIONS请求。
regflood:发送大量的SIP REGISTER注册消息 。
subflood:发送大量的SIP SUBSCRIBE 请求。7、信令和媒体篡改
网络攻击的方式方法很多,下面是关于通过控制信令或修改媒体信息来对SIP服务器进行攻击的方式和工具。
AuthTool:此工具用来测试SIP账号安全认证方式,破解SIP用户密码。
BYE Teardown:此工具对某些特定的SIP设备发生BYE消息,执行拆线。
Check Sync Phone Rebooter:对SIP终端发送NOTIFY消息,重新启动SIP终端。
RedirectPoison: 此工具可以对某些特定的SIP终端发送INVIET到301响应消息转接此终端到第三方指定的SIP IP地址或者服务器。这种工具具有一定的隐蔽性,它可以对对攻击的目标多种服务进行攻击,例如语音邮箱等。
Registration Hijacker:此工具针对SIP注册攻击进行处理。如果攻击成功的话,以前的正常的绑定的URL会从定位服务系统异常,替代的是攻击者留下的地址URL。事实上,这些终端根本不存在。
Registration Eraser:此工具支持此注册的系统中删除注册状态。
Registration Adder:此工具对目标注册系统添加注册用户,工具可以添加一个指定的contact信息。
RTP InsertSound v2.0:此工具可以对RTP语音流插入自定义的语音。
RTP InsertSound v3.0 :此工具可以对RTP语音流插入自定义语音流,同时可以自动检测RTP会话终端和端口。
RTP MixSound v2.0:此工具可以支持对实时语音混合自定义的语音流,完成对媒体的修改。
**RTP MixSound v3.0 **: 此工具可以支持对实时语音混合自定义的语音流,完成对媒体的修改, 同时可以自动检测RTP会话终端和端口。 -
MATLAB快速搭建一个神经网络以及神经网络工具箱的使用
2019-12-02 22:36:06如何利用MATLAB工具箱建立神经网络人工神经网络学习笔记2——MATLAB神经网络工具箱神经网络工具箱的使用MATLAB中神经网络工具箱的使用 0.导读 首先声明,这篇文章的内容并不全是本人的原创内容,凡是引用了别人的...
0.导读
首先声明,这篇文章的内容并不全是本人的原创内容,凡是引用了别人的博客或者文章的地方,我都会标注出来,以便大家阅读原文。
现在最前面的,当然是提纲挈领的废话。凡是商品都有目标人群,文章也该如此,一篇文章写了什么,是写给谁看的,看完之后会起到什么作用,应该是作者在一开始就简明扼要的提出的,否则读者读了文章发现毫无用处,作者挨骂,读者无获,皆不欢喜。
本文的主要内容,是采用形象的描述而非准确的定义来让读者对神经网络有一个粗略的了解,基于MATLAB的GUI界面而非command windows来快速搭建一个神经网络以解决简单的问题。如果你的电脑上没有MATLAB,官方提供的MATLAB在线服务是个不错的选择MATLAB Online - MATLAB & Simulink,当然,前提是你得有正版的激活码。笔者计划在下一篇文章采用准确的定义和MATLAB的脚本语言来进一步阐述神经网络。本文的受众,是那些大学低年级学生–没有受过专业或系统的训练,却因为数模等原因需要在短时间内了解且应用神经网络。
1.神经网络工具箱
为了利用MATLAB搭建一个神经网络,我们要首先了解一下什么是神经网络。斯坦福大学的印度学生、机器学习爱好者 PararthShah 在2012年12月22日的使用买芒果的例子,非常经典易懂。知友Begin Again翻译如下:
你需要挑选芒果,你不知道什么样的芒果最好吃,所以你就尝遍了所有的芒果,然后自己总结出个大深黄色的比较好吃,以后再去买的时候,就可以直接挑选这种。那什么是机器学习呢,就是你让机器“尝”一遍所有芒果,当然,也假设它知道哪些好吃,让机器去总结一套规律(个大深黄色),这就是机器学习。具体操作,就是你描述给机器每一个芒果的特征(颜色,大小,软硬……),描述给机器其输出(味道如何,是否好吃),剩下的就等机器去学习出一套规则。
等等,那机器是怎么学习到这个规则(个大深黄色的好吃)的?没错,是通过机器学习算法。近些年来,由于深度学习概念的兴起,神经网络又成为了机器学习领域最热门的研究方法。神经网络就像一个刚开始学习东西的小孩子,开始认东西,作为一个大人(监督者),第一天,他看见一只京巴狗,你告诉他这是狗;第二天他看见一只波斯猫,他开心地说,这是狗,纠正他,这是猫;第三天,他看见一只蝴蝶犬,他又迷惑了,你告诉他这是狗……直到有一天,他可以分清任何一只猫或者狗。
其实神经网络最初得名,就是其在模拟人的大脑,把每一个节点当作一个神经元,这些“神经元”组成的网络就是神经网络。而由于计算机出色的计算能力和细节把握能力,在大数据的基础上,神经网络往往有比人更出色的表现。当然了,也可以把神经网络当作一个黑箱子,只要告诉它输入,输出,他可以学到输入与输出的函数关系。神经网络的理论基础之一是三层的神经网络可以逼近任意的函数,所以理论上,只要数据量够大,“箱子容量”够大(神经元数量),神经网络就可以学到你要的东西。
2.如何利用MATLAB工具箱建立神经网络
以上的关于神经网络粗浅的描述,虽然并不准确,但是大体的意思表达到位了。简单来说,神经网络就是定义域(输入)和值域(输出)之间的映射。举例来说,病人到医院做了一堆检查,包括肝功能,尿检,血检等,得到了一堆数据(输入),现在要根据这堆数据判断病人得了什么病(输出),这就是神经网络的常用场景之一:模式识别,或者说分类。如下图所示,MATLAB工具箱中的神经网络还可用于曲线拟合(其实这也就是个映射),动态时间序列等问题上。
在MATLAB的command window里输出命令
nnstart
即可调用其自带的神经网络工具箱向导。首先根据你要解决的问题选择合适的神经网络,这里以运用的最多的模式识别举例。选择pattern recognition app,如下图所示。
模式识别工具箱,顾名思义,就是用来解决上述病人看病和判断芒果是否好吃的例子的。该工具箱的神经网络采用了两层前向式网络(A two-layer feed-forward network),训练函数是trainscg(scaled conjugate gradient backpropagation)若隐藏层含有足够多的神经元,就能取得较好的识别效果( can classify vectors arbitrarily well, given enough neurons in its hidden layer)。
点击next,开始导入数据。
在这里要说明一下数据格式。输入数据和目标数据都是以矩阵的形式表示,可以表示为行矩阵或者列矩阵。如图中1号红色框所示,我选择列矩阵,那么我的输入输出矩阵中每一列代表一个样本,比如我有150个样本,每个样本包含四个坐标分量,那么我的输入矩阵大小应该为4*150.目标矩阵也应该按照列来解读,如我有150个样本,那么我的目标矩阵也应该是150,每一列都代表与其相对应的输入的结果,其中0意味着不属于该类,1意味着属于该类。比如,第75个输出属于第二类,那么我的目标矩阵的第75列为(0;1;0)。
点击next,进行数据分类。
在这里简单解释一下这三类数据,分别是训练数据(train),确认数据(validation)和测试数据(test)。其中,训练数据用于训练神经网络,确认数据用于确认神经网络的训练效果,测试数据用于展示神经网络好坏。事实上,确认数据和测试数据的作用相似,在数据量较小的情况下,可以不设置测试数据,只设置训练数据和确认数据。
在确认好各个数据的比例后,点击next选择隐藏层神经元数量。
在这里需要解释的是,隐藏层(hidden layer)的神经元数量的选取没有一定的准则。数量过少会使得拟合效果不好(模式分类不够准确),数量过多有可能出现过拟合状态(对于其他数据的识别能力较差)。所以一般的做法是保留默认值,如果对默认值不满意再增加神经元数量。 点击next,此时已经创建好神经网络。
由于训练函数已经选定为trainscg(scaled conjugate gradient backpropagation)且不可更改,所以直接点击train。
此时弹出训练窗口。这里主要解释一下progress和plots。对于progress,我们看到有一下几个条目:
epoch:其代表着迭代次数。BP神经网络的训练是采用迭代训练的,图中显示训练(迭代)15次即停止。特别的,右边的1000意思是训练次数上限为1000次,超过1000次自动停止。
time:训练的时间。图中显示本次训练时间为1S
validation checks:与performance和gradient同为停止条件之一。意思是若连续几次训练performance和gradient的效果不再提高则视为训练完成。但是通过performance和gradient停止意味着该神经网络达到了我们的预期,而通过validation checks停止则意味着该神经网络没有达到了我们的预期。
对于plots,较有参考价值的为后三个。
误差直方图(error Histogram):如下图所示,绝大部分误差在(-0.0348,0.0363)之间。
混淆矩阵(confusion matrix):可视为一个表格。具体可参考百度百科:混淆矩阵_百度百科
ROC曲线:与混淆矩阵相同,也用来表征该神经网络的效果。具体可参考我之前写的一篇文章:ROC曲线简介 - 知乎专栏
回到nprtool,此时有两种选择。
对神经网络的效果不满意,可以选择retrain。理论上,由于初值不同,每一次训练效果都不一样,但是笔者尝试几次发现并无大的区别。选择next,可进行下一步。
对神经网络不满意,可以选择重新训练(train again),调整隐藏层神经元数目(adjust network size)和导入更多数据。特别的,隐藏层(hidden layer)的神经元数量的选取没有一定的准则。数量过少会使得拟合效果不好(模式分类不够准确),数量过多有可能出现过拟合状态(对于其他数据的识别能力较差)。点击next
此时我们可以选择生成MATLAB函数或者可视化神经网络。生成MATLAB函数的话,你就可以利用刚刚训练的网络来解决你自己的问题啦。当然,你的问题和你之前导入的训练数据一定要是同一个问题。就像你不能拿用病人看病的数据训练出来的网络来进行芒果是否好吃的判断。
点击finish,关闭这个向导。
洋洋洒洒写了这么多,其实就是MATLAB神经网络工具箱的一个注解,希望能够对你有多帮助。当然笔者水平有限,写都不对的地方还是希望你能够私信给我,大家共同学习。
人工神经网络学习笔记2——MATLAB神经网络工具箱
神经网络理论的初学者可以利用MATLAB自带的神经网络工具箱来理解ANN算法。神经网络工具箱模型包括如下内容:
· 感知器
· 线性网络
· BP网络
· 径向基函数网络
· 竞争型神经网络
· 自组织网络和学习向量量化网络
· 反馈网络
神经网络工具箱的使用
在命令行窗口输入nnstart,可以打开MATLAB提供的神经网络图形用户界面,如图1所示:
图1 神经网络图形用户界面
再次点击该界面的‘Fitting app’按钮,打开神经网络工具箱。正如上图显示的一样,直接在命令行窗口输入‘nftool’打开神经网络工具箱。点击之后界面如图2所示:
图2 神经网络工具箱
可以很清楚的看到,一个人工神经网络模型是由‘Input’,‘Hidden Layer’,‘Output Layer’和‘Output’三(四)个主要成分构成,单击‘Next’按钮继续下面的操作。
图3 输入值及目标值选择界面
‘Input’和‘Targets’可以分别选择神经网络的输入及目标值,此处为了演示,我选择了‘Load Example Data Set’按钮用系统自带的数据‘House’导入到要训练的神经网络中,此时输入为‘houseinputs’,目标为‘house Targets’,单击Next继续下一步操作。
图4 样本比例选择界面
阅读图4中信息,我们需要设置用于训练、验证和测试的样本比例,默认为70:15:15。选择完成之后单击‘Next’,开始建立图5所示神经网络结构图。本神经网络共3层,分别为输入层、输出层和隐含层,其中隐含层的神经元数目可以在途中修改。
图5 神经网络隐含层神经元数目选择
确定神经网络隐含层神经元后,单击‘Next’按钮,确定神经网络结构,在出现的界面中可以选择是否训练神经网络,如图6所示。
图6 神经网络的确定
单击‘Train’按钮,选择训练之前确定的神经网络,如图7所示。
图7 训练神经网络
出现如图所示结果,则说明神经网络已经训练完成,可以在‘Plots’选项内选择需要看到的图形信息。‘Performance’按钮可以显示训练结果示意图;‘Training State’可以得到神经网络训练参数的变化过程示意图,如图8,9所示。
图8 训练结果图9 训练参数变化曲线
训练完成后,连续单击‘Next’两次,在神经网络的确定窗口中可以保存此次训练结果。
图10 保存结果
准备文书准备的心力憔悴,以上是MATLAB神经网络工具箱的具体使用流程,更多的细节望大家自己去挖掘!MATLAB中神经网络工具箱的使用
今夕何夕兮,前些天把玩了一下MATLAB中神经网络工具箱的使用,忽有“扪参历井仰胁息”之感。别的倒是没什么,只是神经网络的数据组织结构有些“怪异”,要是不小心就会导致工具箱报错。以下便是神经网络工具箱的正确打开姿势,谨供诸君参考:
1.打开MATLAB,在命令行输入nntool,将出现如下界面:
图1 神经网络工具箱主界面
其中最主要的分为6个部分:第1部分中显示的是系统的输入数据;第2部分是系统的期望输出;第3部分是网络的计算输出;第4部分是网络的误差,即2和3之间的差异;第5部分呈现的是已经建立的神经网络实例;第6部分的两个按钮分别负责数据的导入和网络模型的建立。
2.点击“Import”按钮,分别导入输入数据与目标输出数据(数据可从工作区导入,也可从文件导入):
图2 导入输入数据集
图3 导入期望输出数据集导入数据后主界面的情况如下:
图4 导入数据后的情况
重要说明:神经网络的数据是以列为基本单位的,即输入与输出数据的列数必须相同,否则将报错!如果原先数据是以行为单位组织的话,可以先在MATLAB中实现转置然后再导入,即B = A’。
3.现在需要的数据已经有了,下一步就是建立一个神经网络模型对数据集进行学习。以下步骤以BP网络为例,首先点击“New”按钮,出现如下界面:
图5 神经网络模型设置
几个重要部分已在上图中框出:1处用于定义该神经网络的名称;2处用于选择神经网络的类型;3处用于选择网络的输入数据;4处用于确定网络的期望输出数据;5、6、7处分别对神经网络的主要机制函数进行设置;8处设置网络层数;9处用于选择各网络层(需要说明的是:第1层指的是隐含层而不是输入层),从而在10和11处可以对该层的神经元个数和传递函数进行设置;12处按钮可以用于查看当前所设置的神经网络的结构图(下附图);点击13处按钮即可生成对应的神经网络模型。前面只是简单地介绍了各个部分的作用,具体参数应该如何设置就只有各位自行去学习相关的文献了,此处不再多言。
图6 神经网络结构预览
4.现在模型和数据都有了,下一步该进行模型的训练了。回到主界面如下:
图7 回到主界面
选中我们刚才建立的神经网络模型,然后点击“Open”按钮,将会出现如下界面:
图8 神经网络界面在这里主要介绍两个选项卡中的内容,一个是“Train”,另一个是“Adapt”。点击“Train”选项卡后做相应的设置即可进行神经网络的训练:
图9 模型主要信息设置图10 模型具体参数设置
设置完所有信息后点击“TrainNetwork”按钮即可进行网络的训练了。训练完成后会有一个结果信息界面,如下:
图11 训练结果反馈
5.OK,现在模型训练也结束了,那么下一步自然是要来验证我们训练的模型。先导入验证输入和验证输出,这一步不再重提。然后来到模型验证界面:
图12 验证数据导入后
图13 验证参数设置
红框1中设置网络的输入和验证输出;2中设置网络输出和误差情况的存储名;这些都完成之后点击“Adapt Network”后即可。此后会出现如下的提示界面:
图 14 提示界面接下来再回到神经网络主界面如下:
图15 网络验证结果此时界面中会多出红框所框出的两组数据,它们分别是网络的输出与对应的输出误差。具体的数据可以通过双击它们来打开查看。
重要说明:
神经网络的输入和输出数据要求每列为一个样本,按平常的习惯可能需要转置一下。
否则可能会报输入/输出样本数量不同的错误。
如果出现“input data size does not match net.inputs{1}.size”错误,那是因为创建神经网络是设定的输入个数与样本数据的输入个数不同而引起的,重新创建合适的神经网络即可。 -
如何利用matlab做BP神经网络分析(利用matlab神经网络工具箱)
2018-08-02 16:19:53最近一段时间在研究如何利用...发现神经网络模型可以来预测,并且有很多是结合时间序列或者SVM(支持向量机)等组合模型来进行预测,本文结合实际数据,选取了常用的BP神经网络算法,其算法原理,因网上一大堆,所以...最近一段时间在研究如何利用预测其销量个数,在网上搜索了一下,发现了很多模型来预测,比如利用回归模型、时间序列模型,GM(1,1)模型,可是自己在结合实际的工作内容,发现这几种模型预测的精度不是很高,于是再在网上进行搜索,发现神经网络模型可以来预测,并且有很多是结合时间序列或者SVM(支持向量机)等组合模型来进行预测,本文结合实际数据,选取了常用的BP神经网络算法,其算法原理,因网上一大堆,所以在此不必一一展示,并参考了bp神经网络进行交通预测的Matlab源代码这篇博文,运用matlab 2016a,给出了下面的代码,并最终进行了预测
clc clear all close all %bp 神经网络的预测代码 %载入输出和输入数据 load C:\Users\amzon\Desktop\p.txt; load C:\Users\amzon\Desktop\t.txt; %保存数据到matlab的工作路径里面 save p.mat; save t.mat;%注意t必须为行向量 %赋值给输出p和输入t p=p; t=t; %数据的归一化处理,利用mapminmax函数,使数值归一化到[-1.1]之间 %该函数使用方法如下:[y,ps] =mapminmax(x,ymin,ymax),x需归化的数据输入, %ymin,ymax为需归化到的范围,不填默认为归化到[-1,1] %返回归化后的值y,以及参数ps,ps在结果反归一化中,需要调用 [p1,ps]=mapminmax(p); [t1,ts]=mapminmax(t); %确定训练数据,测试数据,一般是随机的从样本中选取70%的数据作为训练数据 %15%的数据作为测试数据,一般是使用函数dividerand,其一般的使用方法如下: %[trainInd,valInd,testInd] = dividerand(Q,trainRatio,valRatio,testRatio) [trainsample.p,valsample.p,testsample.p] =dividerand(p,0.7,0.15,0.15); [trainsample.t,valsample.t,testsample.t] =dividerand(t,0.7,0.15,0.15); %建立反向传播算法的BP神经网络,使用newff函数,其一般的使用方法如下 %net = newff(minmax(p),[隐层的神经元的个数,输出层的神经元的个数],{隐层神经元的传输函数,输出层的传输函数},'反向传播的训练函数'),其中p为输入数据,t为输出数据 %tf为神经网络的传输函数,默认为'tansig'函数为隐层的传输函数, %purelin函数为输出层的传输函数 %一般在这里还有其他的传输的函数一般的如下,如果预测出来的效果不是很好,可以调节 %TF1 = 'tansig';TF2 = 'logsig'; %TF1 = 'logsig';TF2 = 'purelin'; %TF1 = 'logsig';TF2 = 'logsig'; %TF1 = 'purelin';TF2 = 'purelin'; TF1='tansig';TF2='purelin'; net=newff(minmax(p),[10,1],{TF1 TF2},'traingdm');%网络创建 %网络参数的设置 net.trainParam.epochs=10000;%训练次数设置 net.trainParam.goal=1e-7;%训练目标设置 net.trainParam.lr=0.01;%学习率设置,应设置为较少值,太大虽然会在开始加快收敛速度,但临近最佳点时,会产生动荡,而致使无法收敛 net.trainParam.mc=0.9;%动量因子的设置,默认为0.9 net.trainParam.show=25;%显示的间隔次数 % 指定训练参数 % net.trainFcn = 'traingd'; % 梯度下降算法 % net.trainFcn = 'traingdm'; % 动量梯度下降算法 % net.trainFcn = 'traingda'; % 变学习率梯度下降算法 % net.trainFcn = 'traingdx'; % 变学习率动量梯度下降算法 % (大型网络的首选算法) % net.trainFcn = 'trainrp'; % RPROP(弹性BP)算法,内存需求最小 % 共轭梯度算法 % net.trainFcn = 'traincgf'; %Fletcher-Reeves修正算法 % net.trainFcn = 'traincgp'; %Polak-Ribiere修正算法,内存需求比Fletcher-Reeves修正算法略大 % net.trainFcn = 'traincgb'; % Powell-Beal复位算法,内存需求比Polak-Ribiere修正算法略大 % (大型网络的首选算法) %net.trainFcn = 'trainscg'; % ScaledConjugate Gradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多 % net.trainFcn = 'trainbfg'; %Quasi-Newton Algorithms - BFGS Algorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快 % net.trainFcn = 'trainoss'; % OneStep Secant Algorithm,计算量和内存需求均比BFGS算法小,比共轭梯度算法略大 % (中型网络的首选算法) %net.trainFcn = 'trainlm'; %Levenberg-Marquardt算法,内存需求最大,收敛速度最快 % net.trainFcn = 'trainbr'; % 贝叶斯正则化算法 % 有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss', 'trainlm' %在这里一般是选取'trainlm'函数来训练,其算对对应的是Levenberg-Marquardt算法 net.trainFcn='trainlm'; [net,tr]=train(net,trainsample.p,trainsample.t); %计算仿真,其一般用sim函数 [normtrainoutput,trainPerf]=sim(net,trainsample.p,[],[],trainsample.t);%训练的数据,根据BP得到的结果 [normvalidateoutput,validatePerf]=sim(net,valsample.p,[],[],valsample.t);%验证的数据,经BP得到的结果 [normtestoutput,testPerf]=sim(net,testsample.p,[],[],testsample.t);%测试数据,经BP得到的结果 %将所得的结果进行反归一化,得到其拟合的数据 trainoutput=mapminmax('reverse',normtrainoutput,ts); validateoutput=mapminmax('reverse',normvalidateoutput,ts); testoutput=mapminmax('reverse',normtestoutput,ts); %正常输入的数据的反归一化的处理,得到其正式值 trainvalue=mapminmax('reverse',trainsample.t,ts);%正常的验证数据 validatevalue=mapminmax('reverse',valsample.t,ts);%正常的验证的数据 testvalue=mapminmax('reverse',testsample.t,ts);%正常的测试数据 %做预测,输入要预测的数据pnew pnew=[313,256,239]'; pnewn=mapminmax(pnew); anewn=sim(net,pnewn); anew=mapminmax('reverse',anewn,ts); %绝对误差的计算 errors=trainvalue-trainoutput; %plotregression拟合图 figure,plotregression(trainvalue,trainoutput) %误差图 figure,plot(1:length(errors),errors,'-b') title('误差变化图') %误差值的正态性的检验 figure,hist(errors);%频数直方图 figure,normplot(errors);%Q-Q图 [muhat,sigmahat,muci,sigmaci]=normfit(errors);%参数估计 均值,方差,均值的0.95置信区间,方差的0.95置信区间 [h1,sig,ci]= ttest(errors,muhat);%假设检验 figure, ploterrcorr(errors);%绘制误差的自相关图 figure, parcorr(errors);%绘制偏相关图
运行之后的,结果如下:
BP神经网络的结果分析图
训练数据的梯度和均方误差之间的关系图
验证数据的梯度与学习次数
残差的正态的检验图(Q-Q图)
在网上,发现可以通过神经网络工具箱这个GUI界面来创建神经网络,其一般的操作步骤如下:
1:在输入命令里面输入nntool命令,或者在应用程序这个选项下找到Netrual Net Fitting 这个应用程序,点击打开,就能看见如下界面
2:输入数据和输出数据的导入(在本文中选取了matlab自带的案例数据)
3:随机选择三种类型的数据所占的样本量的比例,一般选取默认即可
4:隐层神经元的确定
5:训练算法的选取,一般是选择默认即可,选择完成后点击<train>按钮即可运行程序
6:根据得到的结果,一般是MSE的值越小,R值越接近1,其训练的效果比较,并第二张图给出了神经网络的各参数的设置以及其最终的结果,其拟合图R越接近1,模型拟合的更好
最终的结果图7:如果所得到的模型不能满足你的需求,则需重复上述的步骤直至能够得到你想要的精确度
8:将最终的得到的各种数据以及其拟合值进行保存,然后查看,就可以得到所要的拟合值
最后参考了网上和MATLAB的帮助,给出了一些与神经网络相关的函数,希望能够帮助大家。。
图形用户界面功能。
nnstart - 神经网络启动GUI
nctool - 神经网络分类工具
nftool - 神经网络的拟合工具
nntraintool - 神经网络的训练工具
nprtool - 神经网络模式识别工具
ntstool - NFTool神经网络时间序列的工具
nntool - 神经网络工具箱的图形用户界面。
查看 - 查看一个神经网络。
网络的建立功能。
cascadeforwardnet - 串级,前馈神经网络。
competlayer - 竞争神经层。
distdelaynet - 分布时滞的神经网络。
elmannet - Elman神经网络。
feedforwardnet - 前馈神经网络。
fitnet - 函数拟合神经网络。
layrecnet - 分层递归神经网络。
linearlayer - 线性神经层。
lvqnet - 学习矢量量化(LVQ)神经网络。
narnet - 非线性自结合的时间序列网络。
narxnet - 非线性自结合的时间序列与外部输入网络。
newgrnn - 设计一个广义回归神经网络。
newhop - 建立经常性的Hopfield网络。
newlind - 设计一个线性层。
newpnn - 设计概率神经网络。
newrb - 径向基网络设计。
newrbe - 设计一个确切的径向基网络。
patternnet - 神经网络模式识别。
感知 - 感知。
selforgmap - 自组织特征映射。
timedelaynet - 时滞神经网络。
利用网络。
网络 - 创建一个自定义神经网络。
SIM卡 - 模拟一个神经网络。
初始化 - 初始化一个神经网络。
适应 - 允许一个神经网络来适应。
火车 - 火车的神经网络。
DISP键 - 显示一个神经网络的属性。
显示 - 显示的名称和神经网络属性
adddelay - 添加延迟神经网络的反应。
closeloop - 神经网络的开放反馈转换到关闭反馈回路。
formwb - 表格偏见和成单个向量的权重。
getwb - 将它作为一个单一向量中的所有网络权值和偏差。
noloop - 删除神经网络的开放和关闭反馈回路。
开环 - 转换神经网络反馈,打开封闭的反馈循环。
removedelay - 删除延迟神经网络的反应。
separatewb - 独立的偏见和重量/偏置向量的权重。
setwb - 将所有与单个矢量网络权值和偏差。
Simulink的支持。
gensim - 生成Simulink模块来模拟神经网络。
setsiminit - 集神经网络的Simulink模块的初始条件
getsiminit - 获取神经网络Simulink模块的初始条件
神经元 - 神经网络Simulink的模块库。
培训职能。
trainb - 批具有重量与偏见学习规则的培训。
trainbfg - 的BFGS拟牛顿倒传递。
trainbr - 贝叶斯规则的BP算法。
trainbu - 与重量与偏见一批无监督学习规则的培训。
trainbuwb - 与体重无监督学习规则与偏见一批培训。
trainc - 循环顺序重量/偏见的培训。
traincgb - 共轭鲍威尔比尔重新启动梯度反向传播。
traincgf - 共轭弗莱彻-里夫斯更新梯度反向传播。
traincgp - 共轭波拉克- Ribiere更新梯度反向传播。
traingd - 梯度下降反向传播。
traingda - 具有自适应LR的反向传播梯度下降。
traingdm - 与动量梯度下降。
traingdx - 梯度下降瓦特/惯性与自适应LR的反向传播。
trainlm - 采用Levenberg -马奎德倒传递。
trainoss - 一步割线倒传递。
trainr - 随机重量/偏见的培训。
trainrp - RPROP反向传播。
trainru - 无监督随机重量/偏见的培训。
火车 - 顺序重量/偏见的培训。
trainscg - 规模化共轭梯度BP算法。
绘图功能。
plotconfusion - 图分类混淆矩阵。
ploterrcorr - 误差自相关时间序列图。
ploterrhist - 绘制误差直方图。
plotfit - 绘图功能适合。
plotinerrcorr - 图输入错误的时间序列的互相关。
plotperform - 小区网络性能。
plotregression - 线性回归情节。
plotresponse - 动态网络图的时间序列响应。
plotroc - 绘制受试者工作特征。
plotsomhits - 小区自组织图来样打。
plotsomnc - 小区自组织映射邻居的连接。
plotsomnd - 小区自组织映射邻居的距离。
plotsomplanes - 小区自组织映射重量的飞机。
plotsompos - 小区自组织映射重量立场。
plotsomtop - 小区自组织映射的拓扑结构。
plottrainstate - 情节训练状态值。
plotwb - 图寒春重量和偏差值图。
列出其他神经网络实现的功能。
nnadapt - 适应职能。
nnderivative - 衍生功能。
nndistance - 距离函数。
nndivision - 除功能。
nninitlayer - 初始化层功能。
nninitnetwork - 初始化网络功能。
nninitweight - 初始化权函数。
nnlearn - 学习功能。
nnnetinput - 净输入功能。
nnperformance - 性能的功能。
nnprocess - 处理功能。
nnsearch - 线搜索功能。
nntopology - 拓扑结构的功能。
nntransfer - 传递函数。
nnweight - 重量的功能。
nndemos - 神经网络工具箱的示威。
nndatasets - 神经网络工具箱的数据集。
nntextdemos - 神经网络设计教科书的示威。
nntextbook - 神经网络设计教科书的资讯。 -
MATLAB 2016b--神经网络工具箱中图形用户界面的使用
2020-03-05 14:28:35MATLAB 2016b 版神经网络工具箱中图形用户界面的使用 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下... -
常用网络工具
2017-05-06 15:54:50这里是计算机网络的一些相关工具的用途和使用方法,很简洁。 -
Linux常用网络工具总结
2017-04-20 12:02:58本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lsof、ip、tcpdump、iptables等。本文不会深入研究这些命令的强大用法,因为每个命令都足以写一篇文章,... -
数学建模——使用matlab神经网络工具箱训练和预测
2021-08-06 17:26:20matlab神经网络工具箱神经网络的训练使用训练好的神经网络进行预测 matlab工具箱可以构建简单的网络模型,原理就不多阐述了,用起来就点点点就行。 神经网络的训练 导入数据:选择合适的数据,一定要选数值矩阵... -
MATLAB神经网络工具箱的使用——Neural Net Fitting app
2021-06-10 10:40:56四、神经网络结构设置 五、神经网络训练函数选择及训练 其中,训练算法有LM算法、贝叶斯正则化法、量化共轭梯度法。 六、神经网络调整 七、产生神经网络应用函数与simulink块 八、产生神经网络示例代码及... -
【Matlab】贝叶斯网络工具箱简介
2019-01-04 17:52:46贝叶斯网络工具箱(FullBNT-1.0.4)使用说明(一).md 贝叶斯网络结构学习方法简介 贝叶斯网络结构学习若干问题解释 贝叶斯网络结构学习(基于BDAGL工具箱的MATLAB实现) 以及自己对该工具箱的一点认识。通过... -
MATLAB神经网络工具箱函数各种图的解释
2020-04-25 08:09:18介绍了matlab神经网络工具箱函数的图解属性和绘图意义 -
matlab 神经网络工具箱 nntraintool 详解
2019-08-02 21:15:56概览Neural Network该部分展示了神经网络的结构,从结构图中可以看出该网络有三个隐含层,神经元个数分别为9个、8个、7个Algorithms该部分展示了该网络所使用的训练算法,可以看出Data Division:该网络采用随机划分... -
利用MATLAB 2016a进行BP神经网络的预测(含有神经网络工具箱)
2018-06-30 15:53:20利用MATLAB 2016a进行BP神经网络的预测(含有神经网络工具箱) 最近一段时间在研究如何利用预测其销量个数,在网上搜索了一下,发现了很多模型来预测,比如利用回归模型、时间序列模型,GM(1,1)模型,可是自己在... -
MATLAB中神经网络工具箱的使用
2018-07-11 17:27:12今夕何夕兮,前些天把玩了一下MATLAB中神经网络工具箱的使用,忽有“扪参历井仰胁息”之感。别的倒是没什么,只是神经网络的数据组织结构有些“怪异”,要是不小心就会导致工具箱报错。以下便是神经网络工具箱的正确... -
如何利用matlab做BP神经网络分析(包括利用matlab神经网络工具箱)
2016-11-21 21:54:01利用MATLAB 进行BP神经网络的预测(含有神经网络工具箱) 最近一段时间在研究如何利用预测其销量个数,在网上搜索了一下,发现了很多模型来预测,比如利用回归模型、时间序列模型,GM(1,1)模型,可是自己在结合... -
Ubuntu 安装netstat网络工具
2019-12-22 20:58:26安装命令:apt-get install net-tools 如下图: -
MATLAB神经网络工具箱(代码简单实现)
2018-07-27 21:17:56根据网上搜素的关于MATLAB神经网络工具箱的GUI操作,结合书上的代码来跑了一遍,发现代码是引用了神经网络工具箱来做工作 %% 该代码为基于BP神经网络的预测算 %% 清空环境变量 clc clear %% 训练数据预测数据... -
centos最小安装后网络工具的安装
2018-08-28 19:38:23centos最小安装后没有网络工具,不能使用 ifconfig 等命令。安装步骤如下: 编辑配置文件 vi /etc/sysconfig/network-scripts/ifcfg-eth0 将ONBOOT=NO改为yes 说明: 最后文件名可能不同。 重启服务然后... -
MATLAB神经网络工具箱(简单操作介绍)
2018-07-27 21:00:20前几天根据师兄提醒,开始根据之后硕士的项目开始学习相关必要知识和工具 首先就是神经网络,通过学习《神经网络和深度学习》大体了解神经网络这个东西以及原理。 这几天开始用MATLAB搭建神经网络的例程跑模型。... -
【源码】开源卷积神经网络工具箱ver 0.83
2018-11-21 09:05:23本工具箱提供了卷积神经网络的MATLAB实现代码。 This project provides matlab class forimplementation of convolutional neural networks. 该类神经网络由YannLeCun开发,并已成功地用于许多实际应用,如手写数字... -
【Matlab】神经网络工具箱
2018-05-08 21:33:341 BP神经网络之Outline1.1BP神经网络的结构多层前向网络,又叫多层感知器传递函数:为误差反向传播提供支持各层之间为全连接误差反向传播收敛的重要条件调整权值和偏置是BP网络的算法核心应用实例:样本数据的归一化... -
BP神经网络的非线性系统建模以及matlab神经网络工具箱的使用
2017-05-31 22:47:08在所有的关系中,数学公式的线性表达是对那些规律性数据的预测统计、而非线性关系的数据,数学方程式只能通过多个参数尽可能模拟数据曲线,神经网络的非线性拟合能力不仅在于参数多还在于激活函数的非线性表达。... -
matlab神经网络工具箱的使用
2016-03-03 23:35:21再搜索,发现可以通过神经网络工具箱来创建神经网络,比较友好的GUI界面, 在输入命令里面输入nntool,就可以开始了。 点击import之后就出现下面的具体的设置神经网络参数的对话界面, 这是输入输出数据的... -
安装matlab贝叶斯网络工具箱
2018-01-15 19:58:14安装matlab贝叶斯网络工具箱 下载工具箱 安装工具箱 安装matlab贝叶斯网络工具箱 1. 下载工具箱 下载链接: 官方下载:http://www.cs.ubc.ca/~murphyk/Software/BNT/FullBNT-1.0.4.zip 入门教程: ... -
MATLAB神经网络工具箱(参数注释)
2018-07-28 19:00:05前几天简单操作了第一章的音频数据分类的神经网络代码,然后发现MATLAB有自带的神经网络的GUI 7.28 分析神经网络GUI参数,根据之前的数据设定参数构建神经网络 之前运用的数据库是做音频分类,在这里就选择预测...