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');