matlab神经网络工具箱最多能训练多少组数据集?
想知道有最大限度吗?
求解答。
望采纳
MATLAB中的神经网络工具箱对其所能处理的数据量没有限制。然而,工具箱能够有效处理的数据量将取决于很多限制因素,如计算机上的可用内存量、神经网络模型的复杂性以及您系统的计算能力。
你可以尝试训练一个小型数据集,然后逐渐增加数据集的大小,以查看计算机的性能。如果您遇到内存不足或处理速度慢的问题,您可以考虑增加计算机的内存或使用更快的计算机来处理大型数据集。
参考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神经网络工具箱的一个注解,希望能够对你有多帮助。当然笔者水平有限,写都不对的地方还是希望你能够私信给我,大家共同学习。