把最优的神经网络训练数据
这一主题提出了典型的多层网络工作流的一部分。和其他步骤的更多信息,见多层浅神经网络和反向传播训练。
当训练多层网络,一般的做法是先将数据划分为三个子集。第一部分是培训集,用于计算梯度和更新网络权重和偏见。第二个是验证子集集。错误的验证集监控培训过程中。验证错误通常减少在初始阶段的训练,训练集一样的错误。然而,当网络开始overfit数据,验证集上的错误通常开始上升。网络的权值和偏差最小的保存验证设置错误。这种技术中更详细地讨论改善浅神经网络泛化,避免过度拟合。
测试错误不是培训期间使用,但它是用来比较不同模型。它也是有用的情节在训练过程中测试设置错误。如果测试集上的误差达到最小,比验证不同的迭代数量设置错误,这可能表明一个贫穷的数据集。
有四个功能提供了将数据划分为训练,验证集和测试集。他们是dividerand
(默认),divideblock
,divideint
,divideind
。数据部门通常是你训练网络时自动执行。
函数 |
算法 |
---|---|
把数据随机(默认) |
|
把数据分成连续的块 |
|
把数据使用一个交叉选择 |
|
把数据通过索引 |
您可以访问或更改您的网络的业务功能与这个属性:
net.divideFcn
每个部门的函数需要的参数自定义其行为。可以更改这些值存储和使用以下网络属性:
net.divideParam
分函数时自动访问网络的训练,并用于将数据划分为训练、验证和测试的子集。如果net.divideFcn
被设置为”
dividerand
”
(默认),数据是使用部门随机分为三个子集的参数net.divideParam.trainRatio
,net.divideParam.valRatio
,net.divideParam.testRatio
。的分数是放置在训练集的数据trainRatio
/ (trainRatio + valRatio + testRatio
),与其他两组类似的公式。的默认比例训练、测试和验证是0.7,0.15和0.15,分别。
如果net.divideFcn
被设置为”
divideblock
”
数据分为三个子集,然后使用三个相邻的块的原始数据集(培训第一块,验证第二和测试第三)。原始数据的分数进入每个子集是由相同的参数用于三个部门dividerand
。
如果net.divideFcn
被设置为”
divideint
”
,那么数据除以一个交叉的方法,在处理一副牌。这样做是不同百分比的数据进入三个子集。原始数据的分数进入每个子集是由相同的参数用于三个部门dividerand
。
当net.divideFcn
被设置为”
divideind
”
通过索引,数据划分。的指数三个子集划分定义的参数net.divideParam.trainInd
,net.divideParam.valInd
和net.divideParam.testInd
。这些指标的默认赋值是空数组,所以你必须设置指标在使用此选项。