MATLAB: Setting input data division ratio

Deep Learning Toolboxdivideparamdivision rationeural network

how can i change division ratio for input data ???…input data is divided by default into 60% for training data , 20 % for validation & 20 % test data….i want to change these values to 70% for training & 15 % for validation & test….i used the following commands to change them: net.divideparam.trainratio=0.7; net.divideparam.valratio=0.15; net.divideparam.testratio=0.15; but after running the program i didn't find any change occured in division of samples !!!

Best Answer

Hi Hoda,
Let me paste an example of a simple 2-layer Feed-Forward network, to see if this works for you (you should be able to reproduce with the same dataset -cancer_dataset.mat-, it comes with the NN toolbox):
load cancer_dataset;
% 2 neurons in the first layer (tansig) and 1 neuron in the second layer
% (purelin).
% Levenberg-Maquardt Backpropagation Method is used
mlp_net = newff(cancerInputs,cancerTargets,2,{'tansig'},'trainlm');
% Different sets are randomly created for training, validation and testing
% the network
mlp_net.divideParam.trainRatio = 0.6;
mlp_net.divideParam.valRatio = 0.2;
mlp_net.divideParam.testRatio = 0.2;
mlp_net.trainparam.epochs = 100;
[mlp_net,tr] = train(mlp_net,cancerInputs,cancerTargets);
% Once the network has been trained, we can obtain the Mean Squared Error
% for the best epoch (time when the training has stopped in order to avoid
% overfitting the network).
mse_train = tr.perf(tr.best_epoch + 1); % There is epoch 0, but arrays in
% MATLAB start in 1.
mse_val = tr.vperf(tr.best_epoch + 1);
mse_test = tr.tperf(tr.best_epoch + 1);
Now, if you check train, validation and test ratios, after the training, you should get:
>> mlp_net.divideParam
ans =
Function Parameters for 'dividerand'
Training Ratio trainRatio: 0.6
Validation Ratio valRatio: 0.2
Test Ratio testRatio: 0.2
By the way, if you are using MATLAB R2011a, you should use feedforwardnet instead of newff.
Hope it helps.