分类

使用培训的深度学习神经网络对数据进行分类

描述

您可以使用培训的神经网络进行预测,以便在CPU或GPU上深入学习。使用GPU需要并行计算工具箱和CUDA®使英伟达®GPU具有计算能力3.0或更高。使用该硬件要求指定硬件要求execultenvironment.名称值对参数。

对于具有多个输出的网络,使用预测并设置'return类别'选择真正的

[ypred.分数] =分类(IMDS.中图像数据的类标签IMDS.使用训练有素的网络,

[ypred.分数] =分类(DS.预测数据的类标签DS.使用训练有素的网络,.对于具有多个输入的网络,请将此语法与组合或转换的数据存储对象一起使用。

例子

[ypred.分数] =分类(X中图像数据的类标签X使用训练有素的网络,

例子

[ypred.分数] =分类(序列中时间序列或序列数据的类标签序列使用培训的LSTM网络,

[ypred.分数] =分类(TBL.预测数据的类标签TBL.使用训练有素的网络,

例子

[ypred.分数] =分类(___名称,价值使用由一个或多个名称-值对参数指定的附加选项预测类标签。

小费

当用不同长度的序列进行预测时,迷你批量大小可以影响添加到的输入数据的填充量,这导致不同的预测值。尝试使用不同的值,以查看最适合您的网络。要指定迷你批量大小和填充选项,请使用“MiniBatchSize”'sequencelength'选项。

例子

全部收缩

加载示例数据。

[XTrain, YTrain] = digitTrain4DArrayData;

digitTrain4DArrayData将设置为4-D阵列数据的数字训练加载。XTrain是28×28×1×5000阵列,其中28个是高度,28是图像的宽度。图1是通道的数量,5000是手写数字的合成图像的数量。YTrain是一个包含每个观察标签的分类矢量。

构建卷积神经网络架构。

层= [...ImageInputLayer([28 28 1])卷积2dlayer(5,20)rululayer maxpooling2dlayer(2,'走吧',2) fulllyconnectedlayer (10) softmaxLayer classificationLayer;

将随机梯度带动量下降的选项设置为默认设置。

选择= trainingOptions ('sgdm');

训练网络。

RNG(“默认”) net = trainNetwork(XTrain,YTrain,layers,options);
单CPU训练。初始化输入数据规范化。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | | |丧失准确性  | |========================================================================================| | 1 | 1 |就是| | 2.3195 | 0.0100 10.16%||2 | 50 | 00:00:03 | 50.78% | 1.7102 | 0.0100 | | 3 | 100 | 00:00:07 | 63.28% | 1.1632 | 0.0100 | | 4 | 150 | 00:00:11 | 60.16% | 1.0859 | 0.0100 | | 6 | 200 | 00:00:15 | 68.75% | 0.8996 | 0.0100 | | 7 | 250 | 00:00:19 | 76.56% | 0.7919 | 0.0100 | | 8 | 300 | 00:00:23 | 73.44% | 0.8411 | 0.0100 | | 9 | 350 | 00:00:28 | 81.25% | 0.5514 | 0.0100 | | 11 | 400 | 00:00:32 | 90.62% | 0.4744 | 0.0100 | | 12 | 450 | 00:00:36 | 92.19% | 0.3614 | 0.0100 | | 13 | 500 | 00:00:40 | 94.53% | 0.3159 | 0.0100 | | 15 | 550 | 00:00:45 | 96.09% | 0.2543 | 0.0100 | | 16 | 600 | 00:00:50 | 92.19% | 0.2765 | 0.0100 | | 17 | 650 | 00:00:55 | 95.31% | 0.2461 | 0.0100 | | 18 | 700 | 00:01:00 | 99.22% | 0.1418 | 0.0100 | | 20 | 750 | 00:01:04 | 98.44% | 0.1000 | 0.0100 | | 21 | 800 | 00:01:08 | 98.44% | 0.1448 | 0.0100 | | 22 | 850 | 00:01:13 | 98.44% | 0.0989 | 0.0100 | | 24 | 900 | 00:01:17 | 96.88% | 0.1316 | 0.0100 | | 25 | 950 | 00:01:20 | 100.00% | 0.0859 | 0.0100 | | 26 | 1000 | 00:01:24 | 100.00% | 0.0701 | 0.0100 | | 27 | 1050 | 00:01:29 | 100.00% | 0.0759 | 0.0100 | | 29 | 1100 | 00:01:32 | 99.22% | 0.0663 | 0.0100 | | 30 | 1150 | 00:01:36 | 98.44% | 0.0775 | 0.0100 | | 30 | 1170 | 00:01:38 | 99.22% | 0.0732 | 0.0100 | |========================================================================================|

在测试集中运行训练过的网络。

[XTest,欧美]= digitTest4DArrayData;YPred =分类(净,XTest);

在测试数据中显示前10个图像并与分类进行比较分类

[ytest(1:10,:) YPRED(1:10,:)]
ans =.10x2分类0 0 0 0 0 0 0 0 0 0 0 0

的结果分类匹配前十幅图像的真实数字。

计算所有测试数据的准确性。

精度= SUM(YPRED == YTEST)/ NUMEL(YTEST)
精度= 0.9820

加载净化网络。Japanesevowelsnet.是在[1]和[2]中描述的日语元音数据集上训练的预训练LSTM网络。对按序列长度排序的序列进行训练,小批量大小为27。

加载Japanesevowelsnet.

查看网络架构。

Net.Layers.
ANS = 5x1层阵列具有图层:1'SENDUNINPUT'序列输入序列输入序列输入12尺寸2'LSTM'LSTM LSTM LSTM LSTM为100个隐藏单元3'FC'完全连接的9完全连接的第4层SoftMax'SoftMax SoftMax SoftMax 5'ClassOutput'分类输出Crossentropyex与“1”和其他8个类

加载测试数据。

[xtest,ytest] =日本韦沃尔斯特迪塔

分类测试数据。

YPred =分类(净,XTest);

使用预测标签查看前10个序列的标签。

[YEST(1:10)YPRED(1:10)]
ans =.10x2分类1 1 1 1 1 1 1 1 1 1 1 1 1

计算预测的分类准确性。

精度= SUM(YPRED == YTEST)/ NUMEL(YTEST)
精度= 0.8595

输入参数

全部收缩

训练有素的网络,指定为系列网络或者一个DAGNetwork目的。您可以通过导入佩带的网络(例如,使用)来获得培训的网络googlenet.功能)或使用自己的网络使用Trainnetwork.

图像数据存储,指定为一个imageageAtastore.目的。

imageageAtastore.允许使用预取批量读取JPG或PNG图像文件。如果您使用自定义函数来读取图像,那么imageageAtastore.不预取。

小费

使用augmentedImageDatastore用于深度学习的图像预处理,包括图像大小调整。

请勿使用readFcn选择imageageAtastore.由于此选项通常显着较慢。

输入数据的数据存储。

对于具有单个输入的网络,DS.可以返回:

  • 单个图像或序列

  • 由图像或序列组成的单元格数组

  • 一种表,其中第一列包含图像或序列

对于具有多个图像输入层的网络,DS.必须是一个组合或转换的数据存储,返回一个单元格数组numinputs.包含输入数据的列,其中numinputs.为网络输入的个数。这一世单元格阵列的元素对应于输入net.InputNames(我)

有关更多信息,请参阅深入学习的数据购物

图像数据,指定为数字数组。数组的大小取决于图像输入的类型:

输入 描述
二维图像 一种H-经过-W.-经过-C-经过-N数字数组,HW.,C是图像的高度,宽度和图像的频道数量,以及N为图像的个数。
三维图像 一种H-经过-W.-经过-D.-经过-C-经过-N数字数组,HW.D.,C图像的高度、宽度、深度和通道数量分别是和吗N为图像的个数。

如果数组包含,然后通过网络传播。

序列或时间序列数据,指定为N-1个数字阵列的1个单元阵列,其中N是观察数、表示单个序列的数字数组或数据存储。

对于单元阵列或数字阵列输入,包含序列的数字阵列的尺寸取决于数据的类型。

输入 描述
矢量序列 C-经过-S.矩阵,C序列的特征数是和吗S.为序列长度。
2-D图像序列 H-经过-W.-经过-C-经过-S.阵列,在哪里HW.,C分别对应图像的高度、宽度和通道数量,和S.为序列长度。
3-D图像序列 H-经过-W.-经过-D.-经过-C-经过-S., 在哪里HW.D.,C分别为三维图像通道的高度、宽度、深度和数量S.为序列长度。

对于数据存储输入,数据存储必须以序列单元格数组或第一列包含序列的表的形式返回数据。序列数据的维度必须与上表相对应。

包含第一列中的输入数据的图像表。表中的每一行对应于观察。该表包含指定为图像的绝对或相对文件路径,指定为指定为数字数组的字符向量或图像。

数据类型:表格

名称-值对的观点

例子:‘MiniBatchSize’,‘256’指定迷你批量大小为256。

指定可选的逗号分隔对名称,价值争论。的名字是参数名称和价值为对应值。的名字必须出现在单引号内(' ')。

用于预测的迷你批次的大小,指定为正整数。较大的迷你批量大小需要更多内存,但可以导致更快的预测。

当用不同长度的序列进行预测时,迷你批量大小可以影响添加到的输入数据的填充量,这导致不同的预测值。尝试使用不同的值,以查看最适合您的网络。要指定迷你批量大小和填充选项,请使用“MiniBatchSize”'sequencelength'选项。

例子:'minibatchsize',256

性能优化,指定为逗号分隔对组成'加速'和以下之一:

  • '汽车'—自动应用一些适合输入网络和硬件资源的优化。

  • 'mex'- 编译并执行MEX功能。仅使用GPU时可用此选项。使用GPU需要并行计算工具箱和支持CUDA的NVIDIA GPU,其计算能力为3.0或更高。如果不可用并行计算工具箱或合适的GPU,则软件返回错误。

  • '没有任何'- 禁用所有加速度。

默认选项是'汽车'.如果'汽车'MATLAB是指定的,®将应用许多兼容的优化。如果你使用'汽车'选项,MATLAB不会生成MEX功能。

使用'加速'选项'汽车''mex'可以提供性能优势,但以增加初始运行时为代价。使用兼容参数的后续调用速度更快。当您计划使用新输入数据多次调用函数时,请使用性能优化。

'mex'选项基于函数调用中使用的网络和参数生成并执行MEX函数。您可以一次使用与单个网络相关联的多个MEX函数。清除网络变量还清除与该网络相关联的任何MEX功能。

'mex'选项仅在使用GPU时可用。您必须安装一个C/ c++编译器和GPU编码器™接口的深度学习库支持包。金宝app在MATLAB中使用Ad金宝appd-On Explorer安装支持包。有关安装说明,请参见墨西哥人设置(GPU编码器)。不需要GPU编码器。

'mex'选项不支持所有图层。金宝app有关支持的图层列表,请参阅金宝app金宝app支持的层数(GPU编码器)。包含a的经常性神经网络(RNN)sequenceInputLayer不受支持。金宝app

你不能使用MATLAB编译器™在使用时部署网络'mex'选项。

例子:'加速','mex'

硬件资源,指定为逗号分隔对组成'executionenvironment'和以下之一:

  • '汽车'- 如果有可用的话,请使用GPU;否则,使用CPU。

  • 'GPU'- 使用GPU。使用GPU需要并行计算工具箱和支持CUDA的NVIDIA GPU,其计算能力为3.0或更高。如果不可用并行计算工具箱或合适的GPU,则软件返回错误。

  • “cpu”- 使用CPU。

例子:“ExecutionEnvironment”、“cpu的

选项要填充,截断或拆分输入序列,指定为以下之一:

  • '最长'- 每个迷你批处理中的缝合序列具有与最长序列相同的长度。此选项不会丢弃任何数据,但填充可以向网络引入噪点。

  • “最短”- 截断每个小批处理中的序列与最短序列具有相同的长度。此选项可确保在丢弃数据的成本下添加填充。

  • 正整数—对于每个小批量,将序列填充到指定长度的最近倍数,该倍数大于最小批量中序列的最长长度,然后将序列分割成指定长度的更小的序列。如果发生分裂,则软件创建额外的小批量。如果完整序列无法装入内存,则使用此选项。或者,尝试通过设置来减少每个小批量的序列数量“MiniBatchSize”选择较低的值。

要了解有关填充,截断和拆分输入序列的影响,请参阅序列填充、截断和分割

例子:“SequenceLength”、“最短的

填充或截断的方向,指定为下列任一种:

  • '对'—在右侧填充或截断序列。序列在同一时间步开始,软件截断或添加填充到序列的结束。

  • “左”-在左侧填充或截断序列。该软件截断或添加填充到序列的开始,以便序列在同一时间步结束。

因为LSTM层处理序列数据的时间一步一次,当层OutputMode.属性是'最后的',最终时间步骤中的任何填充都可以对图层输出产生负面影响。键入或截断左侧的序列数据,设置“SequencePaddingDirection”选择“左”

用于序列到序列网络(当OutputMode.属性是'顺序'对于每个LSTM层),在第一次步骤中的任何填充都可以对较早时间步长的预测产生负面影响。键入或截断右侧序列数据,请设置“SequencePaddingDirection”选择'对'

要了解有关填充,截断和拆分输入序列的影响,请参阅序列填充、截断和分割

填充输入序列的值,指定为标量。该选项仅在何时有效SequenceLength'最长'或者一个正整数。不要用,因为这样做会在整个网络中传播错误。

例子:'sequencdpaddingsvalue', - 1

输出参数

全部收缩

作为分类向量或分类向量的单元格数组返回的预测类标签。的格式ypred.这取决于问题的类型。

下表描述了分类问题的格式。

任务 格式
图像分类 N标签的分类向量,其中N为观察次数。
序列到标签分类
序列到序列分类

N-1个标签的1个分类序列阵列,其中N为观察次数。每个序列在应用后与相应的输入序列具有相同的时间步长SequenceLength每个迷你批处理的选项独立。

对于单次观测的序列到序列分类问题,序列可以是矩阵。在这种情况下,ypred.是一个分类的标签序列。

预测得分或反应,以矩阵或矩阵单元格数组的形式返回。的格式分数这取决于问题的类型。

下表描述了格式分数

任务 格式
图像分类 N-经过-K.矩阵,其中N是观察人数,和K.是课程数量
序列到标签分类
序列到序列分类

N- 1个矩阵的单元阵列,其中N为观察次数。序列是矩阵K.行,在哪里K.是课程的数量。每个序列在应用后与相应的输入序列具有相同的时间步长SequenceLength每个迷你批处理的选项独立。

对于单次观测的序列到序列分类问题,序列可以是矩阵。在这种情况下,分数是预测班级成绩的矩阵。

有关探索分类评分的示例,请参阅使用深度学习对网络摄像头图像进行分类

算法

deep learning Toolbox™中用于深度学习训练、预测和验证的所有函数使用单精度浮点算法执行计算。深度学习的函数包括Trainnetwork.预测分类,激活.当您使用CPU和GPU培训网络时,该软件使用单精度算术。

备择方案

对于具有多个输出的网络,使用预测并设置'return类别'选择真正的

您可以使用培训的网络计算预测的分数预测

您还可以使用网络层计算激活激活

对于序列到标签和序列到序列分类网络,您可以使用预测和更新网络状态classifyandupdateState.predictAndUpdateState

参考

工藤、富山、新保。“使用通过区域的多维曲线分类”。模式识别字母.卷。20,第11-13页,第1103-1111页。

[2]UCI机器学习存储库:日语元音数据集.https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

扩展功能

在R2016A介绍