MATLAB: Reproducing Result

neural network

% Solve an Input-Output Fitting problem with a Neural Network
% Script generated by NFTOOL
% Created Sat Mar 03 13:55:16 IST 2012
%

% This script assumes these variables are defined:
%
% p_training_all - input data.
% t_training_all - target data.
inputs = p_training_all;
targets = t_training_all;
% new_training;
% Create a Fitting Network
hiddenLayerSize =9;
net.inputweights{1,1}.initfcn = 'initzero';
net.layerWeights{1,2}.initFcn = 'initzero';
net.biases{1}.initFcn = 'initzero';
net.biases{2}.initFcn = 'initzero';
net = fitnet(hiddenLayerSize);
% Choose Input and Output Pre/Post-Processing Functions
% For a list of all processing functions type: help nnprocess
net.inputs{1}.processFcns = {'removeconstantrows','mapminmax'};
net.outputs{2}.processFcns = {'removeconstantrows','mapminmax'};
% Setup Division of Data for Training, Validation, Testing
% For a list of all data division functions type: help nndivide
net.divideFcn = 'dividerand'; % Divide data randomly
net.divideMode = 'sample'; % Divide up every sample
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
% For help on training function 'trainlm' type: help trainlm
% For a list of all training functions type: help nntrain
net.trainFcn = 'trainlm'; % Levenberg-Marquardt
net.trainParam.epochs=2000
% Choose a Performance Function
% For a list of all performance functions type: help nnperformance
net.performFcn = 'mse'; % Mean squared error
% Choose Plot Functions
% For a list of all plot functions type: help nnplot
net.plotFcns = {'plotperform','plottrainstate','ploterrhist', ...
'plotregression', 'plotfit'};
% Train the Network
[net,tr] = train(net,inputs,targets);
% Test the Network

outputs = net(inputs);
errors = gsubtract(targets,outputs);
performance = perform(net,targets,outputs)
% Recalculate Training, Validation and Test Performance
trainTargets = targets .* tr.trainMask{1};
valTargets = targets .* tr.valMask{1};
testTargets = targets .* tr.testMask{1};
trainPerformance = perform(net,trainTargets,outputs)
valPerformance = perform(net,valTargets,outputs)
testPerformance = perform(net,testTargets,outputs)
% View the Network
view(net)
% Plots
% Uncomment these lines to enable various plots.
figure, plotperform(tr)
% figure, plottrainstate(tr)
% figure, plotfit(net,inputs,targets)

% figure, plotregression(targets,outputs)

% figure, ploterrhist(errors)

% op=mapminmax('reverse',outputs,TS)
% Test the Network
inputs=p_testing;
targets=t_testing;
outputs = net(inputs);
% errors = gsubtract(targets,outputs);
% performance = perform(net,targets,outputs);
% figure, plotfit(net,inputs,targets)
% figure, plotregression(targets,outputs)
% figure, ploterrhist(errors)
op=mapminmax('reverse',outputs,TS);
xlswrite('Book13.xls',op);
I want to reproduce same result in above program but I am getting different results everytime I run above program. What best can be done to avoid it?
[EDITED, Jan Simon, code formatted]

Best Answer

In general, initial weights and trn/val/tst data division uses random number generation.
Therefore, to obtain reproducible results you must initialize the RNG to the same state every run.
rng(0)
will work but so will positive integers less than a maximum value that I think is ...
Never mind. You'd better read the documentaion:
help rng
doc rng
Hope this helps.
Greg