最佳
我在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&三分之一。
答案 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/2
和net.divideParam.valRatio = 1/2
- 如果您可以按时间顺序设置tr.divideFcn
。最后但并非最不重要的是,如果这是可能的,那么我们就没有其他事情要做了,然后将训练和验证集合放到一个数据集中等等......
亲切地问自己