Matlab - 神经网络 - 如何使用不同的数据集进行训练、验证和测试?

Posted

技术标签:

【中文标题】Matlab - 神经网络 - 如何使用不同的数据集进行训练、验证和测试?【英文标题】:Matlab - neural networks - How to use different datasets for training, validation and testing? 【发布时间】:2015-06-09 10:10:13 【问题描述】:

最好的

我有一个关于 Matlab 中的神经网络的问题。

首先,我有一个小型神经网络,2 个输入,1 个隐藏层,10 个神经元和一个输出。这很好用。但我的问题是。我可以确定我的训练日期、验证数据和测试数据吗?

我知道,如果我使用例如net = feedforwardnet(10); 我可以将我的整体数据集划分为例如 70/100 15/100 和 15/100。但我不想这样做,因为在这种情况下,我想用 1000 个数据点训练我的 NN,用另一个数据点验证它们,并使用另一个包含 1000 个数据点的独立数据集来测试它们。换句话说,我想控制这三个相互依赖的数据集。

那么,有人可以帮帮我吗?

亲切的问候

编辑,我不想使用具有 3000 个数据点的数据集,并将 devideParams 设置为 1/3 1/3 和 1/3。

【问题讨论】:

Matlab neural network, how to force the use of certain sets for training, validation and testing?的可能重复 【参考方案1】:

最好的自己

当您使用feedforwardnet 时,您可以定义除法参数

net.divideParam.trainRatio = 1/3;
net.divideParam.valRatio = 1/3;
net.divideParam.testRatio = 1/3;

您知道您的数据将分为 3 部分。 但是你(我)不知道哪些数据。

但是当你和我通过以下命令行训练我的网络时:

[net,tr]=train(net,x,t); 

那么,tr 将包含所有必要的信息,例如:

tr.trainInd 1x1000 double, 
tr.valInd  1x1000 double, 
tr.testInd  1x1000 double,

因此,例如tr.trainInd 将包含我们用于训练的数据集的所有索引。此外,在tr 中,我们可以看到tr.divideFcn 的类型设置在dividerand 上,这意味着索引是随机选取的。因此,合乎逻辑的是,这些索引有可能不是随机选择的,这意味着,如果我们将两者结合起来。应该可以使用另一个测试集 --> net.divideParam.testRatio = 0 并使用两个不同的训练集和验证集 --> net.divideParam.trainRatio = 1/2net.divideParam.valRatio = 1/2 - 如果您可以将 tr.divideFcn 设置为按时间顺序排列的东西。最后但并非最不重要的一点,如果这是可能的,那么我们无事可做,然后将训练和验证集放在一个数据集中,等等......

向我问好

【讨论】:

【参考方案2】:

默认情况下,它将使用随机索引进行训练、验证、测试。这是手动设置的,但通常不需要:

net.divideFcn = 'dividerand' 

然后你使用上面提到的命令:

net.divideParam.trainRatio = 1/3;
net.divideParam.valRatio = 1/3;
net.divideParam.testRatio = 1/3;

要做你想做的事并设置每个索引,你可以执行以下操作:

net.divideFcn = 'divideind'
net.divideParam.trainInd = [1:1000]
net.divideParam.valInd=[1001:2000]
net.divideParam.testInd=[2001:3000]

【讨论】:

以上是关于Matlab - 神经网络 - 如何使用不同的数据集进行训练、验证和测试?的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB 中的神经网络,初始权重

在matlab中使用神经网络进行分类

如何在 Matlab 中使用经过训练的神经网络在真实系统中进行分类

LSTM回归预测基于matlab LSTM神经网络回归预测含Matlab源码 2227期

如何在不使用数据集的情况下在 Matlab 上比较不同的面部图像?

LSTM时序预测基于matlab LSTM时间序列神经网络预测含Matlab源码 2267期