具体解释有空再补
Create Deep Learning Network Architecture
Script for creating the layers for a deep learning network with:
Number of layers: 5
Number of connections: 4
Run the script to create the layers in the workspace variable layers.
To learn more, see Generate MATLAB Code From Deep Network Designer.
Auto-generated by MATLAB on 2020-04-17 14:13:00
Create the Array of Layers
layers = [ ...
imageInputLayer([200 150 1])
convolution2dLayer(5,20)
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,20)
reluLayer
maxPooling2dLayer(2,'Stride',2)
fullyConnectedLayer(9)
softmaxLayer
classificationLayer];
options = trainingOptions('sgdm', ...
'MaxEpochs',60,...
'InitialLearnRate',1e-4, ...
'Verbose',false, ...
'Plots','training-progress');
Plot the Layers
% plot(layerGraph(layers));
% digitDatasetPath = fullfile(matlabroot,'toolbox','nnet', ...
% 'nndemos','nndatasets','DigitDataset');
% imds = imageDatastore(digitDatasetPath, ...
% 'IncludeSubfolders',true, ...
% 'LabelSource','foldernames');
fff=zeros(200,150,1,5775);
lll=[];
% direroot ='E:/CSITool/csidata/5300/';
% direroot='D:/NUT/finger_drawing_explore/DifferentPerson/'
direroot='D:\NUT\finger_drawing_explore\DifferentPerson\'
% dilist={'20200107-finger/','20200104-finger/','20200106-finger/'};
dilist={'DataSet_few_data\'};
direlist={'0\','2\','3\','4\','5\','6\','7\','8\','9\'};
% direlist={'5/','8/','9/'};
labelist=[0,2,3,4,5,6,7,8,9];
count=1;
for j=1:length(dilist)
for i=1:length(direlist)
dlist = dir([direroot,dilist{j}, direlist{i},'*.png']);
% dlist2 = dir([direroot,dilist{j}, direlist{i},'*ph.png']);
% dlist3 = dir([direroot,dilist{j}, direlist{i},'*PDR.png']);
for f = 1:length(dlist)
% imds.Files{count}=[direroot,dilist{j},direlist{i},dlist(f).name];
% imds.Labels(count)=categorical(i+1);
img=rgb2gray(imread([direroot,dilist{j},direlist{i},dlist(f).name]));
[r,c,z]=size(img);
skipr=floor(r/200);
skipc=floor(c/150);
newimg=img(1:skipr:skipr*200,1:skipc:skipc*150,:);
fff(:,:,1,count)=newimg(:,:,1);
% img=rgb2gray(imread([direroot,dilist{j},direlist{i},dlist2(f).name]));
% [r,c,z]=size(img);
% skipr=ceil(r/44);
% skipc=ceil(c/33);
% newimg=img(1:skipr:r,1:skipc:c,:);
%
% fff(:,:,2,count)=newimg(:,:,1);
%
% img=rgb2gray(imread([direroot,dilist{j},direlist{i},dlist3(f).name]));
% [r,c,z]=size(img);
% skipr=ceil(r/44);
% skipc=ceil(c/33);
% newimg=img(1:skipr:r,1:skipc:c,:);
%
% fff(:,:,3,count)=newimg(:,:,1);
lll(count)=labelist(i);
count=count+1;
end
end
end
lll=lll';
lll=categorical(lll);
net = trainNetwork(fff,lll,layers,options);
% figure
% numImages = count-1;
% perm = randperm(numImages,20);
% for i = 1:20
% subplot(4,5,i);
% imshow(imds.Files{perm(i)});
% end
% numTrainingFiles = 50;
% [imdsTrain,imdsTest] = splitEachLabel(imds,numTrainingFiles,'randomize');
save('convnet_20210413-1.mat','net');
% net = trainNetwork(imdsTrain,layers,options);
fff2=zeros(44,33,1,180);
lll2=[];
dilist={'20200101-finger/'};
count=1;
for j=1:length(dilist)
for i=1:length(direlist)
dlist = dir([direroot,dilist{j}, direlist{i},'*.png']);
% dlist2 = dir([direroot,dilist{j}, direlist{i},'*ph.png']);
% dlist3 = dir([direroot,dilist{j}, direlist{i},'*PDR.png']);
for f = 1:length(dlist)
% imds.Files{count}=[direroot,dilist{j},direlist{i},dlist(f).name];
% imds.Labels(count)=categorical(i+1);
img=rgb2gray(imread([direroot,dilist{j},direlist{i},dlist(f).name]));
% [r,c,z]=size(img);
% skipr=ceil(r/44);
% skipc=ceil(c/33);
% newimg=img(1:skipr:r,1:skipc:c,:);
fff2(:,:,1,count)=newimg(:,:,1);
% img=rgb2gray(imread([direroot,dilist{j},direlist{i},dlist2(f).name]));
% [r,c,z]=size(img);
% skipr=ceil(r/44);
% skipc=ceil(c/33);
% newimg=img(1:skipr:r,1:skipc:c,:);
%
% fff2(:,:,2,count)=newimg(:,:,1);
%
% img=rgb2gray(imread([direroot,dilist{j},direlist{i},dlist3(f).name]));
% [r,c,z]=size(img);
% skipr=ceil(r/44);
% skipc=ceil(c/33);
% newimg=img(1:skipr:r,1:skipc:c,:);
%
% fff2(:,:,3,count)=newimg(:,:,1);
lll2(count)=labelist(i);
count=count+1;
end
end
end
YPred = classify(net,fff2);
YTest = categorical(lll2');
sum(YPred==YTest)/length(lll2)