Matlab提供了最簡單的多分類功能,兩個函數(trainSoftmaxLayer和net)就能完成。即先對對訓練圖像集構造softmax層,然後對測試圖像進行分類。這兩個函數可以在訓練圖像和測試圖像上完成分類的主要功能。代碼如下:
clear;
%加載訓練圖像特徵
load('JDPig_mlhmslbp_spyr.mat');
m = numel(classe_name);
n = length(y);
label = []
%one-hot編碼
for i=1:n
label(:,i) = zeros(m,1);
label(y(i),i) = 1;
end
%加載測試圖像特徵
testImg = load('JDTest_mlhmslbp_spyr.mat');
if ~exist('resSoftMaxMlhms.mat')
%訓練softmax層
net = trainSoftmaxLayer(X,label);
%獲取測試圖像類別
Yp = net(testImg.X);
save('resSoftMaxMlhms.mat','Yp','net');
else
load('resSoftMaxMlhms.mat','Yp','net');
end
%構造圖像、類別、識別概率的table型變量
load('testName.mat','imgName');
for i=1:length(Yp)
for j=1:m
indImg((i-1)*m+j) = imgName(i);
plabel((i-1)*m+j) = j;
prob((i-1)*m+j) = Yp(j,i);
end
end
T = table(indImg',plabel',prob');
%將各測試圖像對於各類別概率存爲csv文件
writetable(T,'myData.csv');