How to unable data division in net training?
Show older comments
I want to classify 11 different hand motions using patternnet and validate the result using 10-fold cross validation (9 for train and 1 for test). How can I unable data division in the training process? Is it ok to do that? My code is as follow:
load FeatureSet;
p=input; %[16 by 1342 ]
t=target; %[11 by 1342]
Nk=1342/11;
labels=[ones(Nk,1); 2.*ones(Nk,1); 3.*ones(Nk,1); 4.*ones(Nk,1); 5.*ones(Nk,1); 6.*ones(Nk,1); 7.*ones(Nk,1); 8.*ones(Nk,1); 9.*ones(Nk,1); 10.*ones(Nk,1); 11.*ones(Nk,1)];
kfold=10;
indices = crossvalind('Kfold',labels,kfold);
for i = 1:kfold
ts = (indices == i); tr = ~ts;
Ptr = p(tr,:); Pts = p(ts,:);
Ttr=t(tr,:); Tts = t(ts,:);
trainFcn = 'trainbr';
net = patternnet([32 32], trainFcn);
net.layers{1}.transferFcn = 'tansig'; % hidden layer 1
net.layers{2}.transferFcn = 'tansig'; % hidden layer 2
% %------------------------parameter
net.trainParam.lr = 0.1; %learning rate
net.trainParam.mc = 0.1; %momentum
%------------------------ train
[net,tr]= train(net,Ptr,Ttr);
%------------------------ test
outputs= sim(net,Pts);
[c,cm] = confusion(Tts,outputs);
pct(i)=100*(1-c); %correction rate
end
Answers (0)
Categories
Find more on Networks in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!