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