主要内容

分类

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

描述

您可以使用培训的神经网络进行预测,以便在CPU或GPU上深入学习。使用GPU需要并行计算工具箱™和支持的GPU设备。万博1manbetx有关支持设备的信息,请参阅万博1manbetxGPU支万博1manbetx持情况(并行计算工具箱)使用该硬件要求指定硬件要求ExecutionEnvironment名称值对参数。

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

YPred=分类(IMDS.预测图像数据存储中图像的类标签IMDS.使用培训的网络

YPred=分类(DS.预测数据存储中数据的类标签DS.

例子

YPred=分类(X预测数字数组指定的图像或特征数据的类标签X

YPred=分类(, X1,…,XN)预测数字数组中的数据的类标签X1,......,XN用于多输入网络.输入西对应于网络输入net.inputnames(i)

例子

YPred=分类(序列预测时间序列或序列数据的类标签序列对于复发网络(例如,LSTM或GU网络)

例子

YPred=分类(资源描述预测表中数据的类标签资源描述

例子

YPred=分类(___名称,价值使用以前的语法中的任何语法预测具有由一个或多个名称值对参数指定的附加选项的类标签。

[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)全连接列(10)SoftmaxLayer分类层];

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

选项=培训选项(“个”);

训练网络。

rng (“默认”)net = trainnetwork(xtrain,ytrain,图层,选项);
单CPU训练。初始化输入数据规范化。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | | |丧失准确性  | |========================================================================================| | 1 | 1 |就是| | 2.3195 | 0.0100 10.16%||2 | 50 | 00:00:04 | 50.78% | 1.7102 | 0.0100 | | 3 | 100 | 00:00:08 | 63.28% | 1.1632 | 0.0100 | | 4 | 150 | 00:00:12 | 60.16% | 1.0859 | 0.0100 | | 6 | 200 | 00:00:17 | 68.75% | 0.8996 | 0.0100 | | 7 | 250 | 00:00:21 | 76.56% | 0.7920 | 0.0100 | | 8 | 300 | 00:00:27 | 73.44% | 0.8411 | 0.0100 | | 9 | 350 | 00:00:32 | 81.25% | 0.5508 | 0.0100 | | 11 | 400 | 00:00:35 | 90.62% | 0.4744 | 0.0100 | | 12 | 450 | 00:00:39 | 92.19% | 0.3614 | 0.0100 | | 13 | 500 | 00:00:43 | 94.53% | 0.3160 | 0.0100 | | 15 | 550 | 00:00:47 | 96.09% | 0.2544 | 0.0100 | | 16 | 600 | 00:00:51 | 92.19% | 0.2765 | 0.0100 | | 17 | 650 | 00:00:55 | 95.31% | 0.2460 | 0.0100 | | 18 | 700 | 00:00:59 | 99.22% | 0.1418 | 0.0100 | | 20 | 750 | 00:01:03 | 98.44% | 0.1000 | 0.0100 | | 21 | 800 | 00:01:08 | 98.44% | 0.1449 | 0.0100 | | 22 | 850 | 00:01:12 | 98.44% | 0.0989 | 0.0100 | | 24 | 900 | 00:01:15 | 96.88% | 0.1315 | 0.0100 | | 25 | 950 | 00:01:19 | 100.00% | 0.0859 | 0.0100 | | 26 | 1000 | 00:01:23 | 100.00% | 0.0701 | 0.0100 | | 27 | 1050 | 00:01:28 | 100.00% | 0.0759 | 0.0100 | | 29 | 1100 | 00:01:33 | 99.22% | 0.0663 | 0.0100 | | 30 | 1150 | 00:01:37 | 98.44% | 0.0776 | 0.0100 | | 30 | 1170 | 00:01:39 | 99.22% | 0.0732 | 0.0100 | |========================================================================================|

在测试集上运行培训的网络。

[xtest,ytest] = digittest4darraydata;ypred =分类(net,xtest);

显示测试数据中的前10张图像,并与分类结果进行比较分类

[欧美(1:10,:)YPred (1:10,:))
ans =.10 x2分类0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

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

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

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

加载净化网络。Japanesevowelsnet.是在日本元音数据集上培训的预磨削的LSTM网络,如[1]和[2]中所述。它训练在序列长度排序的序列中,含有迷你批量大小为27。

加载Japanesevowelsnet.

查看网络架构。

网。层
ans x1 = 5层阵列层:1“sequenceinput”序列输入序列输入12维度2的lstm lstm lstm 100隐藏单位3 fc的完全连接9完全连接层4的softmax softmax softmax 5 classoutput的分类输出crossentropyex ' 1 ', 8其他类

加载测试数据。

[XTest,欧美]= japaneseVowelsTestData;

分类测试数据。

ypred =分类(net,xtest);

查看前10个序列的标签及其预测标签。

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

计算预测的分类准确性。

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

加载佩带的网络传输方式.该网络对定为数字传感器读数,统计和分类输入的混合来分类传输系统的齿轮齿条件。

加载传输通信网络.mat

查看网络架构。

网。层
ANS = 7x1层阵列具有图层:1'输入'特征输入22具有“ZScore”归一化2'FC_1'完全连接的50完全连接的第3层3'Batchnorm'批量归一化批量标准化,具有50通道4'Relu'Relu Relu 5'FC_2'完全连接的2层6'SoftMax'softmax Softmax 7'ClassOutput'分类输出Crossentropyex,具有类别的“无牙故障”和“牙齿故障”

从CSV文件读取传输壳体数据“transactionscasingdata.csv”

filename =.“transactionscasingdata.csv”;台= readtable(文件名,'texttype''细绳');

属性将用于预测的标签转换为分类的转录Vars.功能。

labelName =“GearToothCondition”;tbl = convedvars(tbl,labelname,“分类”);

要使用分类功能进行预测,必须先将分类功能转换为数字。首先,将分类预测因子转换为分类转录Vars.函数的方法是指定一个包含所有分类输入变量名称的字符串数组。在这个数据集中,有两个带有名称的分类特性“SensorCondition”“ShaftCondition”

CategoricalInputnames = [“SensorCondition”“ShaftCondition”];tbl = convedvars(tbl,categoricalinputnames,“分类”);

循环在分类输入变量上。对于每个变量:

  • 属性将分类值转换为一个热点编码向量onehotencode.功能。

  • 使用介绍将单热量向量添加到表中addvars.功能。指定在包含相应的分类数据的列后插入向量。

  • 删除包含分类数据的相应列。

为了i = 1:numel(categoricalinputnames)name = patricalInputnames(i);oh = onehotencode(tbl(:,name));tbl = addvars(tbl,哦,“后”,名称);tbl(:,name)= [];结尾

将向量分割成单独的列splitvars.功能。

台= splitvars(台);

查看表的前几行。

头(TBL)
ans =表8×23SigMean SigMedian SigRMS SigVar SigPeak SigPeak2Peak SigSkewness SigKurtosis SigCrestFactor SigMAD SigRangeCumSum SigCorrDimension SigApproxEntropy SigLyapExponent PeakFreq HighFreqPower EnvPower PeakSpecKurtosis无传感器漂移传感器漂移无轴的磨损轴的磨损GearToothCondition ________ _________ ______ _______ _______ ____________ ___________ ___________ ______________ _______ ______________ ________________ ________________ _______________ ________ _____________ ________ ________________ _______________ ____________ _______________________ __________________ -0.94876 -0.9722 1.3726 0.98387 0.81571 3.6314 -0.041525 2.2666 2.0514 0.8081 28562 1.1429 0.031581 79.931 0 6.75e-06 3.23e-07 162.13 0 1 1 0无齿故障-0.97537 -0.98958 1.3937 0.99105 0.81571 3.6314 -0.023777 2.2598 2.0203 0.81017 294181.1362 0.037835 70.325 0 5.08E-08 9.16E-08 226.12 0 1 1 0无齿故障1.0502 1.0267 1.4449 0.98491 2.8157 3.6314 -0.04162 2.2658 1.9487 0.80853 31712 0.80853 31710 1.1479 0.0.031565 125.19 0 6.74e-06 2.85E-07 162.13 0 1 0 1无齿故障1.0227 1.4288 0.99553 2.8157 3.6314 -0.016356 2.2483 1.9707 0.81324 30984 0.81324 30984 0.81324 30984 1.1472 0.0.0 4.0 4.0 4.0 40-071112.5 0 1 0 1/10 1 0 40 40-07 162.13 0 1 0 1无齿故障1.0123 1.0024 1.01230.99233 2.8157 3.6314 -0.014701 2.2542 1.9826 0.81156 30661 1.1469 0.03287 108.86 0 3.62E-06 2.28e-07 230.39 0 1 0 1无齿故障1.0275 1.0102 1.4338 1.0001 2.8157 3.6314 -0.02659 2.2439 1.9638 0.81589 31102 1.0985 0.033427 64.576 0 2.55e-06 1.65e-07 230.39 0 1 0 1无齿故障1.0464 1.0275 1.4477 1.0011 2.8157 3.6314 -0.042849 2.2455 1.9449 0.81595 2.9449 0.81595 1.9449 0.81595 3.9449 0.81595 3.9449 0.81595 31665 1.1415 0. 0.0 1.73C-06 1.552-07/12.81590 1.0.035405 2.2757 1.955 0.80583 0.80583 31554 1.1345 0.0353 44.223 0 1.11E-06 1.39E-07 230.39 0 1 0 1无齿故障

使用培训的网络预测测试数据的标签并计算精度。指定用于培训的相同百分比大小。

YPred =分类(净台(:1:end-1));

计算分类精度。准确率是指网络预测正确标签的比例。

ytest = tbl {:,labelname};精度= SUM(YPRED == YTEST)/ NUMEL(YTEST)
精度= 0.9952.

输入参数

全部收缩

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

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

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

小费

采用augmentedImageDatastore用于高学习的图像高效预处理,包括图像调整大小。

不要使用readfcn.选择imageDatastore对于预处理或调整大小,因为此选项通常显着较慢。

数据存储空间用于内存数据和预处理。数据存储必须返回表中的数据或单元格数组。数据存储量输出的格式取决于网络架构。

网络架构 数据存储输出 示例输出
单输入

表或单元格数组,第一列指定预测器。

表元素必须是包含数字数组的标量,行向量或1×1个单元阵列。

自定义数据存储必须输出表。

data =阅读(ds)
数据= 4×1表预测器__________________ {224×224×3 double} {224×224×3双} {224×224×3双} {224×224×3双}
data =阅读(ds)
Data = 4×1 cell array {224×224×3 double} {224×224×3 double} {224×224×3 double} {224×224×3 double}
多个输入

至少具有的单元阵列numinputs.列,numinputs.是网络输入的数量。

第一个numinputs.列为每个输入指定预测器。

输入的顺序由输入名称网络的财产。

data =阅读(ds)
data = 4×2 cell array {224×224×3 double} {128×128×3 double} {224×224×3 double} {128×128×3双} {224×224×3双} {128×128×3双} {224×224×3双} {128×128×3双}

预测器的格式取决于数据的类型。

数据 预测器的格式
2-D图像

H——- - - - - -W.——- - - - - -C数字数组,其中HW., 和C是图像的高度,宽度和数量。

三维图像

H——- - - - - -W.——- - - - - -D.——- - - - - -C数字数组,其中HW.D., 和C是图像的高度,宽度,深度和图像的通道数。

向量序列

C——- - - - - -S.矩阵,C是序列的特征数量S.是序列长度。

二维图像序列

H——- - - - - -W.——- - - - - -C——- - - - - -S.阵列,其中HW., 和C对应于图像的高度,宽度和数量,并且S.是序列长度。

迷你批处理中的每个序列必须具有相同的序列长度。

3-D图像序列

H——- - - - - -W.——- - - - - -D.——- - - - - -C——- - - - - -S.阵列,其中HW.D., 和C对应于图像的高度,宽度,深度和数量的图像,以及S.是序列长度。

迷你批处理中的每个序列必须具有相同的序列长度。

特性

C列向量,其中C是特征的数量。

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

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

输入 描述
2-D图像 一种H——- - - - - -W.——- - - - - -C——- - - - - -N数字数组,其中HW., 和C是图像的高度,宽度和图像的频道数量,以及N是图像的数量。
3-D图像 一种H——- - - - - -W.——- - - - - -D.——- - - - - -C——- - - - - -N数字数组,其中HW.D., 和C是图像的高度,宽度,深度和图像通道数,以及N是图像的数量。
特性 一种N——- - - - - -numfeatures.数字数组,其中N是观察人数和numfeatures.是输入数据的功能数量。

如果阵列包含,然后通过网络传播。

对于具有多个输入的网络,您可以指定多个数组X1,......,XN,在那里N是网络输入的数量和输入西对应于网络输入net.inputnames(i)

序列或时间序列数据,指定为一个N-by-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对应于3-D图像的高度,宽度,深度和数量,以及S.是序列长度。

对于数据存储区输入,数据存储必须将数据返回为序列的单元格数组或第一列包含序列的表。序列数据的尺寸必须对应于上表。

图像或特征数据表。表中的每一行都对应一个观察值。

表列中的预测器的排列取决于输入数据的类型。

输入 预测
图像数据
  • 到图像的绝对或相对文件路径,在单个列中指定为字符向量

  • 指定为3d数字数组的图像

在单列中指定预测器。

功能数据

数字标量。

在第一个指定预测器numfeatures.桌子的列,在哪里numfeatures.是输入数据的功能数量。

此参数仅支持单个输入的网络。万博1manbetx

数据类型:桌子

名称值对参数

例子:'minibatchsize','256'指定迷你批量大小为256。

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

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

当使用不同长度的序列进行预测时,小批量的大小会影响添加到输入数据中的填充量,从而导致不同的预测值。尝试使用不同的值,看看哪一个最适合你的网络。要指定小批量大小和填充选项,请使用'minibatchsize''sequencelength'选项分别。

例子:“MiniBatchSize”,256年

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

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

  • 'mex'- 编译并执行MEX功能。仅使用GPU时可用此选项。使用GPU需要并行计算工具箱和支持的GPU设备。万博1manbetx有关支持设备的信息,请参阅万博1manbetxGPU支万博1manbetx持情况(并行计算工具箱)如果并行计算工具箱或合适的GPU不可用,则软件返回错误。

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

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

使用'加速'选项'汽车''mex'可以提供绩效福利,但牺牲了增加的初始运行时间。具有兼容参数的后续调用更快。使用新输入数据计划多次调用函数时,使用性能优化。

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

'mex'选项仅在使用GPU时可用。您必须安装一个C / C ++编译器以及用于深度学习库支持包的GPU编码器™接口。万博1manbetx使用MATLAB中的Ad万博1manbetxd-on Expler安装支持包。有关设置说明,请参阅Mex设置(GPU编码器).不需要GPU编码器。

'mex'选项不支持所有层。万博1manbetx有关受支持的层的列表,请参见万博1manbetx万博1manbetx支持层(GPU编码器).递归神经网络(rnn)包含asequenceInputlayer.不受支持。万博1manbetx

'mex'选项不支持具有多个输入图层或多个万博1manbetx输出层的网络。

你不能使用Matlab Compiler™使用时部署网络'mex'选择。

例子:“加速”、“墨西哥人的

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

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

  • “图形”- 使用GPU。使用GPU需要并行计算工具箱和支持的GPU设备。万博1manbetx有关支持设备的信息,请参阅万博1manbetxGPU支万博1manbetx持情况(并行计算工具箱)如果并行计算工具箱或合适的GPU不可用,则软件返回错误。

  • '中央处理器'—使用CPU。

例子:'executionenvironment','cpu'

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

  • “最长”—在每个小批量中填充序列,使其与最长序列具有相同的长度。这个选项不会丢弃任何数据,尽管填充会给网络带来噪声。

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

  • 正整数 - 对于每个小批次,填充序列到最接近的指定长度的倍数大于小批次中最长的序列长度,然后将序列分成规定长度的较小序列。如果发生拆分,则软件会创建额外的百分之批处理。如果完整序列不适合内存,请使用此选项。或者,尝试通过设置序列减少每百分之批次的序列数'minibatchsize'值较低的值。

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

例子:'Sequencelength','最短'

填充或截断的方向,指定为以下之一:

  • “对”- 右侧的垫或截断序列。该序列在同一时间步骤开始,软件截断或将填充添加到序列的末尾。

  • '剩下'- 左侧或截断序列。该软件截断或将填充添加到序列的开始,使序列同时结束。

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

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

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

填充输入序列的值,指定为标量。该选项仅在何时有效Sequencelength.“最长”或正整数。不要用垫缝,因为这样做可以在整个网络中传播错误。

例子:'sequencdpaddingsvalue', - 1

输出参数

全部收缩

预测类标签,作为分类矢量返回,或分类向量的单元格数组。格式YPred这取决于任务的类型。

下表介绍了分类任务的格式。

任务 格式
图像或特征分类 N-1标签的1个分类向量,在哪里N是观察人数。
序列到标签分类
序列到序列分类

N-1个标签的1个分类序列阵列,其中N是观察人数。在应用后,每个序列具有与相应的输入序列相同的时间步骤Sequencelength.选择每个小批独立。

对于具有一个观察的序列到序列分类任务,序列可以是矩阵。在这种情况下,YPred是标签的分类序列。

预测得分或响应,作为矩阵或小区矩阵阵列。格式得分这取决于任务的类型。

下表描述了格式得分

任务 格式
图像分类 N——- - - - - -K.矩阵,N是观察的次数,和K.是课程数量
序列到标签分类
功能分类
序列到序列分类

N- 1个矩阵的单元阵列,其中N是观察人数。序列是矩阵K.行,K.为类数。在应用后,每个序列具有与相应的输入序列相同的时间步骤Sequencelength.选择每个小批独立。

对于具有一个观察的序列到序列分类任务,序列可以是矩阵。在这种情况下,得分是预测类别分数的矩阵。

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

算法

当您使用该网络训练网络时Trainnetwork.功能,或使用预测或验证功能时Dagnetwork.系列网络对象,软件使用单精度浮点算术执行这些计算。培训,预测和验证的功能包括Trainnetwork.预测分类, 和激活.当你同时使用cpu和gpu训练网络时,该软件使用单精度算法。

备择方案

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

您可以使用预测

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

对于序列到标签和序列到序列分类网络,可以使用以下方法进行预测和更新网络状态classifyAndUpdateStatepredictandanddatestate.

参考文献

[1] M. Kudo,J. Toyama和M. Shimbo。“使用过度区域的多维曲线分类。”模式识别的字母.第20卷,第11-13期,第1103-1111页。

[2]UCI机器学习知识库:日语元音数据集.https://archive.ics.uci.edu/ml/datasets/japanese+vowels.

扩展能力

在R2016A介绍