MATLAB学习help之——Create Simple Deep Learning Network for Classification from Neural Network Toolbox

这是MATLAB关于Deep Learning 的一个入门的简单的例程

Step1
加载并查看数据

digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ...
        'nndatasets','DigitDataset');
digitData = imageDatastore(digitDatasetPath, ...
        'IncludeSubfolders',true,'LabelSource','foldernames');

然后随机显示其中的一部分如下

figure;
perm = randperm(10000,20);
for i = 1:20
    subplot(4,5,i);
    imshow(digitData.Files{perm(i)});
end
图片.png

Step2.
查看每个标签的数量

CountLabel = digitData.countEachLabel;

查看每个图片的尺寸大小

img = readimage(digitData,1);
size(img)

ans =

28    28

把数据集分为 训练数据集 和 测试数据集

trainingNumFiles = 750;
rng(1) % For reproducibility
[trainDigitData,testDigitData] = splitEachLabel(digitData, ...
                trainingNumFiles,'randomize');

Step3.
定义神经层,定义卷积网络的结构

layers = [imageInputLayer([28 28 1])
          convolution2dLayer(5,20)
          reluLayer
          maxPooling2dLayer(2,'Stride',2)
          fullyConnectedLayer(10)
          softmaxLayer
          classificationLayer()];

Image Input Layer :图像输入层,就是图像的尺寸,长通道数,因为是黑白图像,通道数为1,如果为彩色的话,就是3
Convolutional Layer :卷积层,第一个参数是滤波器的尺寸,代表5*5,第二个参数是滤波器的个数
ReLU Layer:激活函数的个数
Max-Pooling Layer:最大池化层
Fully Connected Layer :全连接层,和待输出的标签个数一致
Softmax Layer:激活函数或者分类函数
Classification Layer:分类函数

Step4.
指定训练参数

options = trainingOptions('sgdm','MaxEpochs',15, ...
    'InitialLearnRate',0.0001);

训练数据

convnet = trainNetwork(trainDigitData,layers,options);

训练结果如下


图片.png

Step5.
分类测试数据集

YTest = classify(convnet,testDigitData);
TTest = testDigitData.Labels;

计算准确率

accuracy = sum(YTest == TTest)/numel(TTest);
图片.png

总结:

  1. 学习了几个通用函数的使用方式
    fullfile,用来构造文件路径
    randperm,取随机整数
    rng,初始化随机数种子

  2. 关于深度学习用到的几个函数
    imageDatastore,组建图像处理数据集
    splitEachLabel,标签分类

CNN卷积的一些设置函数:
imageInputLayer
convolution2dLayer
reluLayer
maxPooling2dLayer
fullyConnectedLayer
softmaxLayer
classificationLayer

trainingOptions
trainNetwork,训练神经网络
classify,对训练好的神经网络应用用于分类

推荐阅读更多精彩内容