سلام دیتای من دارای 240داده به طول رشته 256 عدد می باشد که داری دو کلاس است
وقتی خروجی می خواهم بگیرم درصد60 بمن میدهد برای بالابردن درصد دقت چه تغییری باید در معماری برنامه بدهم
با توجه به اینکه تعداد ایپاچ برنامه را حتی به 12هزار بردم ولی فقط 1درصد اضافه شد.
کد برنامه :
clear all;
subtype=xlsread('book6');
vecs=subtype(:,1:end-1)';
targs=subtype(:,end);
%======================================
mx=max(targs);
indtrain=[];
indtest=[];
for i=1:mx
ind=find(i==targs);
indtrain=[indtrain ind(1:round(end/2))'];
indtest=[indtest ind(round(end/2):end)'];
end
train_vec=vecs(:,indtrain);
test_vec=vecs(:,indtest);
train_targ=targs(indtrain);
test_targ=targs(indtest);
%======================================vector to image
[x,y]=size(train_vec);
for i=1:y
train_im(:,:,1,i)=reshape(train_vec(:,i),[16 16]);
end
[x,y]=size(test_vec);
for i=1:y
test_im(:,:,1,i)=reshape(test_vec(:,i),[16 16]);
end
train_targ=categorical(train_targ);
test_targ=categorical(test_targ);
[x,y]=size(train_im);
%--------------------------------------------
layers = [imageInputLayer([x x 1]);
convolution2dLayer(5,30);
reluLayer();
% maxPooling2dLayer(2,'Stride',2);
convolution2dLayer(4,60);
reluLayer();
maxPooling2dLayer(2,'Stride',2);
convolution2dLayer(2,120);
reluLayer();
% convolution2dLayer(2,240);
% reluLayer();
% maxPooling2dLayer(2,'Stride',2);
convolution2dLayer(3,80);
reluLayer();
% maxPooling2dLayer(2,'Stride',2);
%
% convolution2dLayer(3,320);
% reluLayer();
% maxPooling2dLayer(2,'Stride',2);
% maxPooling2dLayer(3, 'Stride', 2, 'Padding', [1 1]);
% convolution2dLayer(3,200);
% reluLayer();
% maxPooling2dLayer(2,'Stride',2);
fullyConnectedLayer(33);
reluLayer();
% fullyConnectedLayer(5);
% reluLayer();
fullyConnectedLayer(mx);
softmaxLayer();
classificationLayer()];
% layers=convnet.Layers;
options = trainingOptions('sgdm','MaxEpochs',6000,'InitialLearnRate',0.001);
convnet = trainNetwork(train_im,train_targ,layers,options);
y = classify(convnet,test_im);
plotconfusion(ind2vec(double(test_targ')),ind2vec(double(y')))
numel(find((double(test_targ)-double(y))==0))/numel(double(test_targ))