MATLAB快速搭建一个神经网络以及神经网络工具箱的使用

article/2025/9/18 20:33:50

文章目录

  • 0.导读
    • 1.神经网络工具箱
      • 2.如何利用MATLAB工具箱建立神经网络
    • 人工神经网络学习笔记2——MATLAB神经网络工具箱
      • 神经网络工具箱的使用
    • MATLAB中神经网络工具箱的使用

在这里插入图片描述

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”错误,那是因为创建神经网络是设定的输入个数与样本数据的输入个数不同而引起的,重新创建合适的神经网络即可。


http://chatgpt.dhexx.cn/article/SrA9glQM.shtml

相关文章

matlab:matlab神经网络工具的使用

步骤如下: 1、打开matlab,点击“app”,图示“三角形”图标。 2、图中圈出工具箱,即为神经网络工具箱工具箱。这四种分别为BP、拟合、模式识别和时间序列神经网络。这里我们使用时间序列神经网络。 3、图示,右边即为选择问题处理…

网络工具推荐盘点:助你事半功倍的神奇工具

工具一: Timing是一款非常优秀的学习时间管理APP,它可以帮助用户更好地规划和管理学习时间。该应用程序提供了丰富的工具和功能,包括图书馆、自习室、番茄钟等,让用户可以轻松记录和管理学习时间。 作为一个专注于学习时间管理的…

backtrader股票技术指标自定义与量化回测

01 引言 股票市场自交易以来,人们就开始孜孜不倦地探索各种各样的投资理论,其中技术分析是重要的理论之一。实际上,技术分析是100多年前创建的股票投资理论,是投资者对股票量价变化长期观察归纳总结的若干“规律”。技术分析以市场…

TradingView--自定义技术指标

TradingView 支持自定义指标&#xff0c;不过是把你要定义的指标写成一个 JS&#xff08;customIndex.js&#xff09; 源文件&#xff0c;放在图表库 static 文件夹下。自定义指标 JS 源代码官网模板如下&#xff1a; {// 将<study name>替换为您的指标名称// 它将由图表…

图表背后的秘密 | 技术指标讲解:ATR指标

ATR&#xff08;Average True Range&#xff09;被称为平均真实波幅。起初应用于股票市场分析&#xff0c;主要用于研判买卖时机&#xff0c;是显示市场变化率的反趋向指标&#xff0c;由威尔德1978年在其书中提出&#xff0c;目前已成为众多指标经常引用的技术量。 ATR指标的计…

PLC系统中的5个技术指标

在工业自动化控制中&#xff0c;经常会遇到开关量、数字值、模拟值、离散值、脉冲值等各种概念&#xff0c;人们在实际应用中很容易混淆这些概念。各种概念如下: 1.开关量:一般指触点的“开”和“关”状态&#xff0c;计算机设备中也常用“0”或“1”来表示开关量的状态。开关量…

传统技术指标有效性的量化分析

投资要点 技术分析源远流长&#xff0c;最早可追溯到查尔斯.亨利.道对股票移动平均数&#xff08;MA&#xff09;的研究&#xff0c;至今已走过100多年的发展历程。这些技术指标尤其是那些常见的、经典的、传统的指标&#xff0c;已经成为普通投资者普遍熟知和使用的研判工具&…

性能测试指标之业务指标和技术指标如何进行区别

通过业务指标 转化我们的技术指标&#xff0c;用户 第三方客户&#xff0c; 公司内部产品经理 产品经理 会提出产品业务指标&#xff0c;需要对业务指标进行挖掘&#xff0c;提出测试场景 业务指标会转化成相对应的技术指标 时间指标 平均响应时间 最大响应时间 最小的响…

用Python绘制MACD、KDJ、布林线技术指标图

背景介绍&#xff1a; 搭建程序化交易平台的过程需要研究技术指标。 环境&#xff1a; OS&#xff1a;mac PYTHON: 3.8 IDE: pycharm 步骤&#xff1a; 第一步&#xff1a;加载库 import pandas as pd import pandas_datareader as web from datetime import datetime, …

计算机硬件的主要技术指标

计算机硬件的主要技术指标 机器字长&#xff1a;CPU一次能处理数据的二进制位数。存储容量&#xff1a;存放二进制信息的总位数运算速度运算速度&#xff08;吉普森法&#xff09;图片来源&#xff1a;老师授课PPT 机器字长&#xff1a;CPU一次能处理数据的二进制位数。 1.由运…

技术分析中的五种常见指标

目录 相对强弱指数&#xff08;RSI&#xff09;移动平均线&#xff08;MA&#xff09;平滑异同移动平均线&#xff08;MACD&#xff09;随机相对强弱指数&#xff08;StochRSI&#xff09;布林线指标&#xff08;BB&#xff09; 简介 市场交易者通过对技术指标的分析来确定资…

数字证书是什么?

数字证书作为一种虚拟证书在互联网的传输过程起着至关重要的作用&#xff0c;人们都知道在数字证书作用下&#xff0c;我们的信息隐私得已保护&#xff0c;但是对于数字证书概念&#xff0c;相信大部分都还是一知半解的。接下来&#xff0c;小编将给大家介绍一下数字证书是什么…

数字证书有什么作用?

数字证书是指 CA 机构发行的一种电子文档&#xff0c;是一串能够表明网络用户身份信息的数字&#xff0c;提供了一种在计算机网络上验证网络用户身份的方式&#xff0c;因此数字证书又称为数字标识。CA 中心采用的是以数字加密技术为核心的数字证书认证技术&#xff0c;通过数字…

数字证书再理解

1.基础知识 1.1.公钥密码体制(public-key cryptography) 公钥密码体制分为三个部分&#xff0c;公钥、私钥、加密解密算法&#xff0c;它的加密解密过程如下&#xff1a; 加密&#xff1a;通过加密算法和公钥对内容(或说明文)进行加密&#xff0c;得到密文。加密过程需要用到…

数字证书(CA)的理解

数字证书的理解 前言 「公开密钥加密」和「数字签名」无法保证公开密钥确实来自信息的发送者。因此&#xff0c;就算公开密钥被第三者恶意替换&#xff0c;接收方也不会注意到。数字证书可以完美的解决这一问题&#xff0c;保证公开密钥的正确性。 处理流程图解 A持有公开密…

CA和数字证书

文章目录 1. 什么是CA2. 数字证书能做什么3. 非对称密钥运算原理4. PKCS系列标准4.1 PKCS#14.2 PKCS#74.2 .1 SignedData的结构分析4.2 .2 envelopedData的结构 4.3 数字信封4.4 PKCS#104.4.1 证书请求过程4.4.2 证书验证过程 5. X.509证书简介5.1 证书文件扩展名5.2 证书链和交…

数字证书原理

证书&#xff0c;也叫做数字证书&#xff0c;是网络世界中的“身份证”。证书将持有者的身份信息和公钥关联到一起&#xff0c;保证公钥确实是这个证书持有者的&#xff0c;通过证书就可以确认持有者的身份。证书由权威的、公正的、可信任的第三方机构颁发&#xff0c;我们把证…

数字证书介绍

1.数字证书的分类 1.1按持有者分类 通常依照证书持有者的类型可将证书分为三类&#xff1a;个人证书、单位证书和系统证书。 个人证书&#xff1a;CA中心给个人颁发的证书&#xff0c;仅代表个人身份&#xff0c;证书包含个人信息和个人公钥。 单位证书&#xff1a;CA中心给…

数字证书相关

概念 数字证书 数字身份&#xff08;digital identity&#xff09;是身份标识方式的一种&#xff0c;是一对“钥匙”&#xff0c;其中一个只有她/他本人知道&#xff08;即私钥&#xff09;&#xff0c;另一个是公开的&#xff08;公钥&#xff09;。把数字身份比喻成一个证件…

网站上数字证书原理你知道么?

前言&#xff1a;文中首先解释了加密解密的一些基础知识和概念&#xff0c;然后通过一个加密通信过程的例子说明了加密算法的作用&#xff0c;以及数字证书的出现所起的作用。接着对数字证书做一个详细的解释&#xff0c;并讨论一下windows中数字证书的管理&#xff0c;最后演示…