Select matrix for training,testing and validation on ANN

3 visualizzazioni (ultimi 30 giorni)
Hello to all,
completeX = [1:+1:100;2:+2:200]';
completeY = [1:+1:100]';
From my data set i divided in a specific form and I got a Xtrain (72x2), Xcv (8x2) and Xtest (20x2)
i would like to tell the net which matrix is the training, validation and testing, instead of matlab performing the random spliting, is that possible?
net = fitnet(10,'trainlm');
net.divideParam.train = Xtrain;
net.divideParam.val = Xcv;
net.divideParam.test = Xtest;
[net, TR] = train(net,completeX',completeY');
Hope it was clear,

Risposta accettata

Raunak Gupta
Raunak Gupta il 4 Dic 2019
You may try dividing the whole dataset based on the indices as understandable from the question. Below code may help.
completeX = [1:+1:100;2:+2:200]';
completeY = [1:+1:100]';
net = fitnet(10,'trainlm');
net.divideFcn = 'divideind';
net.divideParam.trainInd = 1:72;
net.divideParam.valInd = 73:80;
net.divideParam.testInd = 81:100;
[net, TR] = train(net,completeX',completeY');
TR.trainInd , TR.valInd , TR.testInd will give the indices of training , validation and test data which can be used to find performance of the network. You may manipulate above indices vector as required.
  1 Commento
Tiago Dias
Tiago Dias il 4 Dic 2019
Modificato: Tiago Dias il 4 Dic 2019
Thanks, but i did a workaround.
I forced the validation and testing to be zero. So that i could use the train function only for the training set, then i validate with the testing set, in order to choose the right number of neurons for the hidden layer. Then i tested with the testing set.
What you wrote it was a good idea as well. since I got the 3 matrixes, i could merge them, and in that matter the first rows are training, then validation and testing, didnt think of that thanks!

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by