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

时间:2015-04-04 13:39:02

标签: matlab neural-network

最佳

我在Matlab中提出了一个关于神经网络的问题。

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

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

因此,有人可以帮助我吗?

亲切的问候

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

1 个答案:

答案 0 :(得分:0)

最好的自己

当您使用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。最后但并非最不重要的是,如果这是可能的,那么我们就没有其他事情要做了,然后将训练和验证集合放到一个数据集中等等......

亲切地问自己