does anybody ever use neural network to do a prediction with regularization optimization instead of early stopping?
Hi, everyone, I am trying to train a neural network (NN) for prediction, to prevent overfitting, I chose to use regularization method for optimization, so I chose 'trainbr' as the training function, and 'msereg' as the performance function. The input and output data are preprocessed to constrain them to be within [-1,1]. And the data is divided into 2 groups randomly, one for training (70%), one for testing (30%).
Below is part of my codes, does anyone can help me to check it? I am new learner of NN, not sure whether it's correct or not. The NN I am designing includes one hidden layer, one input layer (6 inputs), and one output layer (one output). I am trying to loop through 1 to 60 of the hidden neurons to find a good result, but right now, the result I get is not good at all, I am considering, maybe the code is not properly written. Thanks!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for k=1:num %clear; %clc;
RandStream.setGlobalStream(RandStream('mt19937ar','seed',1)); % reset the global random number stream to its initial settings, this cause rand,randi and randn to start over, as if in a new matlab session.
% Create a Fitting Network hiddenLayerSize = k; net = fitnet(hiddenLayerSize); % net = fitnet([hiddenLayerSize,nn]); nn is the number of hidden layer net=init(net); % initialize the network % Choose Input and Output Pre/Post-Processing Functions % For a list of all processing functions type: help nnprocess net.inputs{1}.processFcns = {'removeconstantrows'}; net.outputs{2}.processFcns = {'removeconstantrows'}; % Setup Division of Data for Training, Validation, Testing % For a list of all data division functions type: help nndivide net.divideFcn = 'divideind'; % Divide data by index net.divideParam.trainInd = trnind; net.divideParam.testInd = tstind; % set the transfer function (activation function) for input and % output layers net.layers{1}.transferFcn = 'tansig'; % layer 1 corresponds to the hidden layer net.layers{2}.transferFcn = 'purelin'; % layer 2 corresponds to the output layer % For help on training function 'trainlm' type: help trainlm % For a list of all training functions type: help nntrain net.trainFcn = 'trainbr'; % Levenberg-Marquardt optimization with Bayesian regularization net.trainParam.goal=0.01.*var(targets); % usually set this to be 1% of the var(target) net.trainParam.epochs=500; net.trainParam.mu_dec=0.8; net.trainParam.mu_inc=1.5; % Choose a Performance Function % For a list of all performance functions type: help nnperformance net.performFcn = 'msereg'; % 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 and Test Performance trainTargets = targets .* tr.trainMask{1}; testTargets = targets .* tr.testMask{1}; trainPerformance = perform(net,trainTargets,outputs); testPerformance = perform(net,testTargets,outputs); %some statistics codes, not shown here end
ANSWER
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
GEH1=' Predictions are performed with timeseries functions'
GEH2=['You are using FITNET which is used for REGRESSION and CURVEFITTING']
GEH3 = ['You should have included results from applying
your code to the MATLAB dataset in the help and doc examples' ]
close all, clear all, clc
for i = 1:2
RandStream.setGlobalStream(RandStream('mt19937ar','seed',1));
if i == 1
[ x , t ] = simplefit ; % help & doc fitnet
else
x=[-1:.05:1];t=sin(2*pi*x)+0.1*randn(size(x));%doc trainbr
end
net = fitnet; % H = 10 default
net.trainFcn = 'trainbr';
perfratio = net.performParam.ratio % 0.95238
% minimization goal is sse(weights)+perfratio*sse(t -y)
trnratio = net.divideParam.trainratio % 0.7
valratio = net.divideParam.valratio % 0.15
tstratio = net.divideParam.testratio % 0.15
% trn/val/tst indices will be assigned during training % To obtain them, need to use training record tr:
[ net tr ] = train(net,x,t);
view(net);
y = net(x);
perf(i) = perform(net,y,t) % SAME AS MSE, NOT MINIMIZATION GOAL!
MSE(i) = mse(t-y)
end
MSE = perf % [1.6979e-11 0.0080867]
NMSE = MSE/var(t,1) %[ 3.5535e-11 0.016924 ]
Rsq = 1 - NMSE %[ 1 0.98308 ],
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
GEH1=' Predictions are performed with timeseries functions' GEH2=['You are using FITNET which is used for REGRESSION and CURVEFITTING'] GEH3 = ['You should have included results from applying your code to the MATLAB dataset in the help and doc examples' ] close all, clear all, clc for i = 1:2 RandStream.setGlobalStream(RandStream('mt19937ar','seed',1)); if i == 1 [ x , t ] = simplefit ; % help & doc fitnet else x=[-1:.05:1];t=sin(2*pi*x)+0.1*randn(size(x));%doc trainbr end net = fitnet; % H = 10 default net.trainFcn = 'trainbr'; perfratio = net.performParam.ratio % 0.95238 % minimization goal is sse(weights)+perfratio*sse(t -y) trnratio = net.divideParam.trainratio % 0.7 valratio = net.divideParam.valratio % 0.15 tstratio = net.divideParam.testratio % 0.15
% trn/val/tst indices will be assigned during training % To obtain them, need to use training record tr:
[ net tr ] = train(net,x,t); view(net); y = net(x); perf(i) = perform(net,y,t) % SAME AS MSE, NOT MINIMIZATION GOAL! MSE(i) = mse(t-y) end MSE = perf % [1.6979e-11 0.0080867] NMSE = MSE/var(t,1) %[ 3.5535e-11 0.016924 ] Rsq = 1 - NMSE %[ 1 0.98308 ],
Comments
Post a Comment