Select matrix for training,testing and validation on ANN

2 views (last 30 days)
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,
Thanks!

Accepted Answer

Raunak Gupta
Raunak Gupta on 4 Dec 2019
Hi,
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 Comment
Tiago Dias
Tiago Dias on 4 Dec 2019
Edited: Tiago Dias on 4 Dec 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!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!