这个例子展示了如何创建和训练一个简单的卷积神经网络用于深度学习分类。卷积神经网络是深度学习的重要工具,尤其适用于图像识别。
这个例子演示了如何:
加载图像数据。
定义网络架构。
指定培训选项。
培训网络。
预测新数据的标签并计算分类精度。
有关如何交互式地创建和训练简单的图像分类网络的示例,请参见使用深度网络设计器创建简单的图像分类网络.
加载数字样本数据作为图像数据存储。的imageDatastore
函数根据文件夹名称自动标记图像。
digitDatasetPath = fullfile (matlabroot,“工具箱”,“nnet”,“nndemos”,...“nndatasets”,“DigitDataset”);imd = imageDatastore (digitDatasetPath,...“IncludeSubfolders”,真的,...“LabelSource”,“foldernames”);
将数据划分为训练数据集和验证数据集,使训练集中的每个类别包含750幅图像,验证集包含每个标签的剩余图像。splitEachLabel
将图像数据存储分割为两个新的数据存储,用于培训和验证。
numTrainFiles = 750;[imdsTrain, imdsValidation] = splitEachLabel (imd, numTrainFiles“随机”);
定义卷积神经网络结构。指定网络输入层图像的大小和分类层之前的全连接层的类数。每个图像是28 × 28 × 1像素,有10个类。
inputSize = [28 28 1];numClasses = 10;layers = [imageInputLayer(inputSize) convolution2dLayer(5,20) batchNormalizationLayer relullayer fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer]; / /创建一个新的层
有关深度学习层的更多信息,请参见深度学习层列表.
指定培训选项并对网络进行培训。
默认情况下,trainNetwork
如果GPU可用,则使用GPU,否则使用CPU。GPU上的培训需要并行计算工具箱™和支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU支金宝app持情况(并行计算工具箱).属性也可以指定执行环境“ExecutionEnvironment”
的名称-值对参数trainingOptions
.
选择= trainingOptions (“个”,...“MaxEpochs”4...“ValidationData”imdsValidation,...“ValidationFrequency”30岁的...“详细”假的,...“阴谋”,“训练进步”);网= trainNetwork (imdsTrain层,选项);
有关培训选项的更多信息,请参见卷积神经网络参数的建立与训练.
对验证数据进行分类,计算分类精度。
YPred =分类(净,imdsValidation);YValidation = imdsValidation.Labels;精度=平均值(YPred == YValidation)
精度= 0.9892
对于深度学习的下一步,你可以尝试在其他任务中使用预先训练好的网络。用迁移学习或特征提取解决图像数据的新分类问题。有关示例,请参见使用迁移学习更快地开始深度学习和使用从预训练网络中提取的特征训练分类器.要了解更多关于预训练网络的信息,请看预先训练的深度神经网络.