分类
利用训练好的深度学习神经网络对数据进行分类
语法
描述
你可以使用经过训练的神经网络在CPU或GPU上进行深度学习。使用GPU需要并行计算工具箱™和受支持的GPU设备。金宝app有关受支持设备的信息,请参见金宝appGPU支金宝app持版本(并行计算工具箱).属性指定硬件需求ExecutionEnvironment
名称-值参数。
对于具有多个输出的网络,使用预测
函数,并设置ReturnCategorical
选项真正的
.
___=分类(___,
用一个或多个名称-值参数指定的附加选项预测类标签。名称=值
)
提示
当您使用不同长度的序列进行预测时,小批大小可能会影响添加到输入数据中的填充量,从而导致不同的预测值。尝试使用不同的值,看看哪个最适合你的网络。要指定小批处理大小和填充选项,请使用MiniBatchSize
而且SequenceLength
选项,分别。
例子
利用训练过的卷积神经网络进行图像分类
加载预训练的网络digitsNet
.该网络是一种分类卷积神经网络,用于对手写数字进行分类。
负载digitsNet
查看网络层次。网络的输出层是分类层。
层=净。层
图层数组= 15x11' imageinput'图像输入28x28x1图像,'zerocenter'归一化2' conv_1' Convolution 8 3x3x1卷积,stride[1 1],填充'same' 3 'batchnorm_1'批量归一化8通道批量归一化4 'relu_1' ReLU ReLU 5 'maxpool_1' Max Pooling 2x2 Max Pooling with stride[2 2],填充[0 0 0 0 0]6 'conv_2' Convolution 16 3x3x8卷积,stride[1 1],填充'same' 7 'batchnorm_2'批量归一化16通道批量归一化8 'relu_2' ReLUReLU 9 'maxpool_2' Max Pooling 2x2 max pooling with stride [2 2] and padding [0 0 0 0] 10 'conv_3' Convolution 32 3x3x16 convolutions with stride [1 1] and padding 'same' 11 'batchnorm_3' Batch Normalization Batch normalization with 32 channels 12 'relu_3' ReLU ReLU 13 'fc' Fully Connected 10 fully connected layer 14 'softmax' Softmax softmax 15 'classoutput' Classification Output crossentropyex with '0' and 9 other classes
加载测试图像。
digitDatasetPath = fullfile(toolboxdir(“nnet”),“nndemos”,“nndatasets”,“DigitDataset”);imdsTest = imageDatastore(digitDatasetPath, inclesubfolders =true);
方法对图像进行分类分类
函数。
YTest = category (net,imdsTest);
随机查看一些测试图像及其预测。
numImages = 9;idx = randperm(nummel (imdste . files),numImages);图tiledlayout (“流”)为i = 1:numImages nexttile imshow(imdsTest.Files{idx(i)});标题(“预测标签:”+字符串(欧美(idx (i))))结束
利用训练过的LSTM网络对序列进行分类
加载预训练的网络JapaneseVowelsNet
.该网络是在[1]和[2]中描述的日语Vowels数据集上训练的预训练LSTM网络。它在按序列长度排序的序列上训练,迷你批量大小为27。
负载JapaneseVowelsNet
查看网络结构。
网层
ans = 5x1层数组与层:1' sequenceinput'序列输入序列输入与12维2 'lstm' lstm lstm与100个隐藏单元3 'fc'全连接9全连接层4 'softmax' softmax softmax 5 'classoutput'分类输出crossentropyex与'1'和8个其他类
加载测试数据。
[XTest,TTest] =日本evowelstestdata;
分类测试数据。
YTest = category (net,XTest);
在困惑图中查看预测。
次图confusionchart (tt)
计算预测的分类精度。
精度=平均值(YTest == TTest)
准确度= 0.8595
利用训练网络对特征数据进行分类
加载预训练的网络TransmissionCasingNet
.该网络将给定的数字传感器读数、统计数据和分类输入混合在一起,对传动系统的齿轮齿状态进行分类。
负载TransmissionCasingNet
查看网络结构。
网层
ans = 7x1层阵列:1' input'特征输入22个特征与'zscore'归一化2' fc_1'全连接50全连接层3 'batchnorm'批量归一化批量归一化50通道4 'relu' relu relu 5 'fc_2'全连接2全连接层6 'softmax' softmax softmax 7 'classoutput'分类输出crossentropyex类'No Tooth Fault'和'Tooth Fault'
从CSV文件中读取传输套管数据“transmissionCasingData.csv”
.
文件名=“transmissionCasingData.csv”;tbl = readtable(文件名,TextType=“字符串”);
属性将预测标签转换为分类标签convertvars
函数。
labelName =“GearToothCondition”;tbl = convertvars(tbl,labelName,“分类”);
要使用分类特征进行预测,必须首先将分类特征转换为数字。方法将类别预测符转换为类别预测符convertvars
通过指定包含所有类别输入变量名称的字符串数组来实现。这个数据集有两个分类特征“SensorCondition”
而且“ShaftCondition”
.
categoricalInputNames = [“SensorCondition”“ShaftCondition”];tbl = convertvars(tbl,categoricalInputNames,“分类”);
遍历分类输入变量。对于每个变量:
类将类别值转换为单热编码向量
onehotencode
函数。函数将单热向量添加到表中
addvars
函数。指定在包含相应类别数据的列之后插入向量。删除包含类别数据的相应列。
为i = 1:numel(categoricalInputNames) name = categoricalInputNames(i);Oh = onehotencode(tbl(:,name));tbl = addvars(tbl,oh,After=name);Tbl (:,name) = [];结束
方法将向量拆分为单独的列splitvars
函数。
TBL =分裂(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 01 10无齿故障-0.97537 -0.98958 1.3937 0.99105 0.81571 3.6314 -0.023777 2.2598 2.0203 0.81017 29418 1.1362 0.037835 70.325 0 5.08e-08 9.16e-08 226.12 01 10无齿故障1.0502 1.0267 1.4449 0.98491 3.6314 -0.04162 2.2658 1.9487 0.80853 31710 1.14790.031565 - 125.19 6.74 2.85 e-06 e-07 162.13 0 1 0 1没有牙齿错1.0227 1.0045 1.4288 0.99553 2.8157 3.6314 -0.016356 2.2483 1.9707 0.81324 30984 1.1472 0.032088 112.5 4.99 e-06 2.4 e-07 162.13 0 1 0 1没有牙齿错1.0123 1.0024 1.4202 0.99233 2.8157 3.6314 -0.014701 2.2542 1.9826 0.81156 30661 1.1469 0.03287 108.86 3.62 e-06 2.28 e-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 1.65 0.81589 1.0985 0.033427 64.576 31102 0 2.55 e-06 e-07 230.3901 01牙号故障1.0464 1.0275 1.4477 1.0011 2.8157 3.6314 -0.042849 2.2455 1.9449 0.81595 31665 1.1417 0.034159 98.838 0 1.73e-06 1.55e-07 230.39 01 01牙号故障1.0459 1.0257 1.4402 0.98047 2.8157 3.6314 -0.035405 2.2757 1.955 0.80583 31554 1.1345 0.0353 44.223 0 1.11e-06 1.39e-07 230.39 01 011牙号故障
从表中提取测试标签。
TTest = tbl{:,labelName};
利用训练好的网络预测测试数据的标签,并计算准确率。指定用于训练的相同的小批大小。
YTest =分类(net,tbl(:,1:end-1));
在一个混淆矩阵中可视化预测。
次图confusionchart (tt)
计算分类精度。准确率是指网络正确预测的标签的比例。
精度=平均值(YTest == TTest)
准确度= 0.9952
输入参数
网
- - - - - -训练网络
SeriesNetwork
对象|DAGNetwork
对象
训练过的网络,指定为SeriesNetwork
或者一个DAGNetwork
对象。可以通过导入预训练的网络(例如,通过使用googlenet
函数)或通过训练自己的网络使用trainNetwork
.
图片
- - - - - -图像数据
数据存储|数字数组|表格
图像数据,指定为下列之一。
数据类型 | 描述 | 示例使用 | |
---|---|---|---|
数据存储 | ImageDatastore |
保存在磁盘上的图像的数据存储 | 使用保存在磁盘上的图像进行预测,其中图像大小相同。 当图像大小不同时,请使用 |
AugmentedImageDatastore |
应用随机仿射几何变换的数据存储,包括调整大小、旋转、反射、剪切和平移 | 使用保存在磁盘上的图像进行预测,其中图像大小不同。 |
|
TransformedDatastore |
使用自定义转换函数转换从底层数据存储读取的批量数据的数据存储 |
|
|
CombinedDatastore |
从两个或多个底层数据存储中读取的数据存储 |
|
|
自定义小批量数据存储 | 返回小批量数据的自定义数据存储 | 使用其他数据存储不支持的格式的数据进行预测。金宝app 详细信息请参见开发自定义小批量数据存储. |
|
数字数组 | 指定为数值数组的图像 | 使用适合内存的数据进行预测,不需要像调整大小这样的额外处理。 | |
表格 | 指定为表的映像 | 使用存储在表格中的数据进行预测。 |
当使用具有多个输入的网络的数据存储时,该数据存储必须是TransformedDatastore
或CombinedDatastore
对象。
提示
对于图像序列,例如视频数据,请使用序列
输入参数。
数据存储
数据存储读取小批量的图像和响应。当您有不适合内存的数据时,或者当您想要调整输入数据的大小时,请使用数据存储。
这些数据存储直接与分类
对于图像数据。
自定义小批量数据存储。详细信息请参见开发自定义小批量数据存储.
请注意,ImageDatastore
对象允许使用预取批量读取JPG或PNG图像文件。如果使用自定义函数读取图像,则ImageDatastore
对象不预取。
提示
使用augmentedImageDatastore
用于深度学习图像的有效预处理,包括图像大小调整。
请勿使用readFcn
选项imageDatastore
函数用于预处理或调整大小,因为此选项通常显着较慢。
属性可以使用其他内置数据存储进行预测变换
而且结合
功能。这些函数可以将从数据存储读取的数据转换为所需的格式分类
.
所需的数据存储输出格式取决于网络架构。
网络体系结构 | 数据存储输出 | 示例输出 |
---|---|---|
单输入 | 表或单元格数组,其中第一列指定预测器。 表元素必须是标量、行向量或包含数字数组的1乘1单元格数组。 自定义数据存储必须输出表。 |
数据=读取(ds) data = 4×1 table Predictors __________________ {224×224×3 double} {224×224×3 double} {224×224×3 double} {224×224×3 double} |
数据=读取(ds) Data = 4×1 cell array {224×224×3 double} {224×224×3 double} {224×224×3 double} {224×224×3 double} |
||
多个输入 | 单元格数组至少 第一个 输入的顺序由 |
数据=读取(ds) Data = 4×2 cell array {224×224×3 double} {128×128×3 double} {224×224×3 double} {128×128×3 double} {224×224×3 double} {128×128×3 double} {224×224×3 double} {128×128×3 double} |
预测器的格式取决于数据的类型。
数据 | 格式 |
---|---|
二维图像 | h——- - - - - -w——- - - - - -c数字数组,其中h,w,c图像的高度、宽度和通道数是否分别为 |
三维图像 | h——- - - - - -w——- - - - - -d——- - - - - -c数字数组,其中h,w,d,c图像的高度、宽度、深度和通道数是否分别为 |
有关更多信息,请参见用于深度学习的数据存储.
数字数组
对于适合内存且不需要额外处理(如增强)的数据,可以将图像数据集指定为数值数组。
数值数组的大小和形状取决于图像数据的类型。
数据 | 格式 |
---|---|
二维图像 | h——- - - - - -w——- - - - - -c——- - - - - -N数字数组,其中h,w,c图像的高度、宽度和通道数分别是和N是图像的数量吗 |
三维图像 | h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -N数字数组,其中h,w,d,c图像的高度、宽度、深度和通道数分别为和N是图像的数量吗 |
表格
作为数据存储或数字数组的替代方法,还可以在表中指定映像。
在表中指定图像时,表中的每一行都对应一个观察值。
对于图像输入,预测器必须在表的第一列中,指定为以下之一:
图像的绝对或相对文件路径,指定为字符向量
包含a的1乘1单元格数组h——- - - - - -w——- - - - - -c表示二维图像的数字数组,其中h,w,c分别对应于图像的高度、宽度和通道数
序列
- - - - - -序列或时间序列数据
数据存储|数值数组的单元格数组|数字数组
序列或时间序列数据,指定为下列之一。
数据类型 | 描述 | 示例使用 | |
---|---|---|---|
数据存储 | TransformedDatastore |
使用自定义转换函数转换从底层数据存储读取的批量数据的数据存储 |
|
CombinedDatastore |
从两个或多个底层数据存储中读取的数据存储 |
|
|
自定义小批量数据存储 | 返回小批量数据的自定义数据存储 | 使用其他数据存储不支持的格式的数据进行预测。金宝app 详细信息请参见开发自定义小批量数据存储. |
|
数字或单元格数组 | 指定为数值数组的单个序列或指定为数值数组的单元格数组的序列数据集 | 使用适合内存的数据进行预测,不需要像自定义转换这样的额外处理。 |
数据存储
数据存储读取小批量的序列和响应。当您拥有不适合内存的数据时,或者当您希望对数据应用转换时,请使用数据存储。
这些数据存储直接与分类
序列数据:
自定义小批量数据存储。详细信息请参见开发自定义小批量数据存储.
属性可以使用其他内置数据存储进行预测变换
而且结合
功能。这些函数可以将从数据存储读取的数据转换为所需的表或单元格数组格式分类
.例如,您可以转换和组合从内存数组和CSV文件读取的数据ArrayDatastore
和一个TabularTextDatastore
对象,分别。
数据存储必须返回表或单元格数组中的数据。自定义小批量数据存储必须输出表。
数据存储输出 | 示例输出 |
---|---|
表格 |
数据=读取(ds) data = 4×2表预测 __________________ { 12×50双}{12×50双}{12×50双}{12×50双} |
单元阵列 |
数据=读取(ds) Data = 4×2 cell array {12×50 double} {12×50 double} {12×50 double} {12×50 double} |
预测器的格式取决于数据的类型。
数据 | 预测词的格式 |
---|---|
向量序列 | c——- - - - - -年代矩阵,c序列的特征数和年代是序列长度 |
一维图像序列 | h——- - - - - -c——- - - - - -年代数组,h而且c分别对应于图像的高度和通道数,和年代是序列长度。 小批中的每个序列必须具有相同的序列长度。 |
二维图像序列 | h——- - - - - -w——- - - - - -c——- - - - - -年代数组,h,w,c分别对应图像的高度、宽度和通道数,和年代是序列长度。 小批中的每个序列必须具有相同的序列长度。 |
三维图像序列 | h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代数组,h,w,d,c分别对应图像的高度、宽度、深度和通道数,和年代是序列长度。 小批中的每个序列必须具有相同的序列长度。 |
对于表中返回的预测器,元素必须包含数字标量、数字行向量或包含数字数组的1乘1单元格数组。
有关更多信息,请参见用于深度学习的数据存储.
数字或单元格数组
对于适合内存且不需要自定义转换等额外处理的数据,可以将单个序列指定为数值数组,或将序列数据集指定为数值数组的单元格数组。
对于单元格数组输入,单元格数组必须为N-by-1单元格数组的数值数组,其中N是观测的数量。表示序列的数值数组的大小和形状取决于序列数据的类型。
输入 | 描述 |
---|---|
向量序列 | c——- - - - - -年代矩阵,c序列特征的数量和年代是序列长度 |
一维图像序列 | h——- - - - - -c——- - - - - -年代数组,h而且c分别对应图像的高度和通道数,和年代是序列长度 |
二维图像序列 | h——- - - - - -w——- - - - - -c——- - - - - -年代数组,h,w,c分别对应图像的高度、宽度和通道数,和年代是序列长度 |
三维图像序列 | h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代,在那里h,w,d,c分别对应三维图像的高度、宽度、深度和通道数,和年代是序列长度 |
特性
- - - - - -特性数据
数据存储|数字数组|表格
特征数据,指定为以下之一。
数据类型 | 描述 | 示例使用 | |
---|---|---|---|
数据存储 | TransformedDatastore |
使用自定义转换函数转换从底层数据存储读取的批量数据的数据存储 |
|
CombinedDatastore |
从两个或多个底层数据存储中读取的数据存储 |
|
|
自定义小批量数据存储 | 返回小批量数据的自定义数据存储 | 使用其他数据存储不支持的格式的数据进行预测。金宝app 详细信息请参见开发自定义小批量数据存储. |
|
表格 | 作为表指定的特性数据 | 使用存储在表格中的数据进行预测。 | |
数字数组 | 指定为数值数组的特征数据 | 使用适合内存的数据进行预测,不需要像自定义转换这样的额外处理。 |
数据存储
数据存储读取小批量的特征数据和响应。当您拥有不适合内存的数据时,或者当您希望对数据应用转换时,请使用数据存储。
这些数据存储直接与分类
对于特征数据:
自定义小批量数据存储。详细信息请参见开发自定义小批量数据存储.
属性可以使用其他内置数据存储进行预测变换
而且结合
功能。这些函数可以将从数据存储读取的数据转换为所需的表或单元格数组格式分类
.有关更多信息,请参见用于深度学习的数据存储.
对于有多个输入的网络,数据存储必须是TransformedDatastore
或CombinedDatastore
对象。
数据存储必须返回表或单元格数组中的数据。自定义小批量数据存储必须输出表。数据存储输出的格式取决于网络架构。
网络体系结构 | 数据存储输出 | 示例输出 |
---|---|---|
单输入层 | 包含至少一列的表或单元格数组,其中第一列指定预测器。 表元素必须是标量、行向量或包含数字数组的1乘1单元格数组。 自定义小批量数据存储必须输出表。 |
单输入网络表: 数据=读取(ds) data = 4×2表预测 __________________ { 24×24×1双}{1双}{24×1双}{24×1双} |
单输入网络的单元格数组: 数据=读取(ds) Data = 4×1 cell array {24×1 double} {24×1 double} {24×1 double} {24×1 double} |
||
多个输入层 | 单元格数组至少 第一个 输入的顺序由 |
双输入网络单元阵列: 数据=读取(ds) Data = 4×3 cell array {24×1 double} {28×1 double} {24×1 double} {28×1 double} {24×1 double} {28×1 double} {24×1 double} {28×1 double} |
预测因素肯定是c-by-1列向量,其中c是特征的数量。
有关更多信息,请参见用于深度学习的数据存储.
表格
对于适合内存且不需要额外处理(如自定义转换)的特性数据,可以将特性数据和响应指定为表。
表中的每一行都对应一个观察值。预测器在表列中的排列取决于任务的类型。
任务 | 预测 |
---|---|
功能分类 | 在一个或多个列中作为标量指定的特性。 |
数字数组
对于适合内存且不需要自定义转换等额外处理的特征数据,可以将特征数据指定为数值数组。
数值数组必须为N——- - - - - -numFeatures
数字数组,其中N观察的次数和numFeatures
输入数据的特征数。
X1,…,XN
- - - - - -用于多输入网络的数字或单元格数组
数字数组|单元阵列
混合
- - - - - -混合数据
TransformedDatastore
|CombinedDatastore
|自定义小批量数据存储
混合数据,指定为以下之一。
数据类型 | 描述 | 示例使用 |
---|---|---|
TransformedDatastore |
使用自定义转换函数转换从底层数据存储读取的批量数据的数据存储 |
|
CombinedDatastore |
从两个或多个底层数据存储中读取的数据存储 |
|
自定义小批量数据存储 | 返回小批量数据的自定义数据存储 | 使用其他数据存储不支持的格式的数据进行预测。金宝app 详细信息请参见开发自定义小批量数据存储. |
属性可以使用其他内置数据存储进行预测变换
而且结合
功能。这些函数可以将从数据存储读取的数据转换为所需的表或单元格数组格式分类
.有关更多信息,请参见用于深度学习的数据存储.
数据存储必须返回表或单元格数组中的数据。自定义小批量数据存储必须输出表。数据存储输出的格式取决于网络架构。
数据存储输出 | 示例输出 |
---|---|
单元格数组 输入的顺序由 |
数据=读取(ds) Data = 4×3 cell array {24×1 double} {28×1 double} {24×1 double} {28×1 double} {24×1 double} {28×1 double} {24×1 double} {28×1 double} |
对于图像、序列和特征预测器输入,预测器的格式必须匹配中描述的格式图片
,序列
,或特性
参数描述。
有关如何训练具有多个输入的网络的示例,请参见训练网络图像和特征数据.
提示
若要将数值数组转换为数据存储,请使用arrayDatastore
.
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:MiniBatchSize = 256
指定迷你批处理大小为256。
MiniBatchSize
- - - - - -小批尺寸
128
(默认)|正整数
用于预测的小批的大小,指定为正整数。更大的迷你批处理需要更多的内存,但可以导致更快的预测。
当您使用不同长度的序列进行预测时,小批大小可能会影响添加到输入数据中的填充量,从而导致不同的预测值。尝试使用不同的值,看看哪个最适合你的网络。要指定小批处理大小和填充选项,请使用MiniBatchSize
而且SequenceLength
选项,分别。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
加速度
- - - - - -性能优化
“汽车”
(默认)|“墨西哥人”
|“没有”
性能优化,指定为以下之一:
“汽车”
—自动应用大量适合输入网络和硬件资源的优化。“墨西哥人”
—编译并执行MEX函数。该选项仅当使用GPU时有效。使用GPU需要并行计算工具箱和支持的GPU设备。金宝app有关受支持设备的信息,请参见金宝appGPU支金宝app持版本(并行计算工具箱).如果并行计算工具箱或合适的GPU不可用,那么软件将返回一个错误。“没有”
-禁用所有加速。
如果加速度
是“汽车”
,然后MATLAB®应用许多兼容优化,但不生成MEX函数。
的“汽车”
而且“墨西哥人”
选项可以以增加初始运行时间为代价提供性能优势。具有兼容参数的后续调用速度更快。当您计划使用新的输入数据多次调用函数时,请使用性能优化。
的“墨西哥人”
选项根据函数调用中使用的网络和参数生成并执行一个MEX函数。您可以同时拥有与单个网络关联的多个MEX功能。清除网络变量也会清除与该网络关联的任何MEX函数。
的“墨西哥人”
选项在使用单个GPU时可用。
使用“墨西哥人”
选项,您必须安装C/ c++编译器和GPU Coder™接口深度学习库支持包。金宝app使用MATLAB中的Ad金宝appd-On资源管理器安装支持包。有关设置说明,请参见墨西哥人设置(GPU编码器).GPU Coder不需要。
的“墨西哥人”
选项不支持所有层。金宝app有关受支持层的列表,请参见金宝app金宝app支持层(GPU编码器).
MATLAB编译器™不支持部署网络时使金宝app用“墨西哥人”
选择。
ExecutionEnvironment
- - - - - -硬件资源
“汽车”
(默认)|“图形”
|“cpu”
|“multi-gpu”
|“平行”
硬件资源,指定为下列之一:
“汽车”
-如果有GPU,请使用GPU;否则,请使用CPU。“图形”
—使用GPU。使用GPU需要并行计算工具箱和支持的GPU设备。金宝app有关受支持设备的信息,请参见金宝appGPU支金宝app持版本(并行计算工具箱).如果并行计算工具箱或合适的GPU不可用,那么软件将返回一个错误。“cpu”
—使用CPU。“multi-gpu”
—在一台机器上使用多个gpu,使用基于默认集群配置文件的本地并行池。如果当前没有并行池,软件将启动一个大小等于可用gpu数量的并行池。“平行”
—根据默认集群配置文件,使用本地或远端并行池。如果当前没有并行池,软件将使用默认集群配置文件启动一个并行池。如果池可以访问GPU,那么只有具有唯一GPU的工作者才能执行计算。如果池中没有gpu,那么计算将在所有可用的CPU worker上进行。
有关何时使用不同执行环境的详细信息,请参见并行、gpu和云中扩展深度学习.
的“图形”
,“multi-gpu”
,“平行”
选项需要并行计算工具箱。要使用GPU进行深度学习,还必须有支持GPU的设备。金宝app有关受支持设备的信息,请参见金宝appGPU支金宝app持版本(并行计算工具箱).如果您选择了这些选项之一,而并行计算工具箱或合适的GPU不可用,则软件将返回一个错误。
的“multi-gpu”
而且“平行”
选项不支持包含带有状态参数的自金宝app定义层或在预测时有状态的内置层的网络,例如循环层,例如LSTMLayer
,BiLSTMLayer
,或GRULayer
对象。
SequenceLength
- - - - - -选项垫或截断序列
“最长”
(默认)|“最短”
|正整数
填充、截断或分割输入序列的选项,指定为下列之一:
“最长”
-每个小批中的衬垫序列与最长序列具有相同的长度。这个选项不会丢弃任何数据,尽管填充会给网络带来噪声。“最短”
-截断每个小批中的序列,使其长度与最短序列相同。此选项确保不添加填充,但要以丢弃数据为代价。正整数-对于每个迷你批,将序列填充到指定长度的最近倍数,该倍数大于迷你批中最长的序列长度,然后将序列分割为指定长度的更小序列。如果发生分裂,那么软件将创建额外的小批。如果完整序列不适合内存,请使用此选项。或者,尝试通过设置。来减少每个小批的序列数
MiniBatchSize
选择较低的值。
有关填充、截断和分隔输入序列的效果的详细信息,请参见序列填充,截断和分割.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|字符
|字符串
SequencePaddingDirection
- - - - - -填充或截断的方向
“正确”
(默认)|“左”
填充或截断方向,指定为下列之一:
“正确”
-填充或截断右边的序列。序列在同一时间步开始,软件截断或增加填充序列的结束。“左”
-填充或截断左边的序列。该软件截断或添加填充到序列的开始,以便序列在同一时间步结束。
因为循环层处理序列数据一次一步,当循环层OutputMode
属性是“最后一次”
,最后时间步长的任何填充都会对层输出产生负面影响。若要在左侧填充或截断序列数据,请设置SequencePaddingDirection
选项“左”
.
对于序列对序列网络(当OutputMode
属性是“序列”
对于每个循环层),第一次时间步骤中的任何填充都会对早期时间步骤的预测产生负面影响。若要在右侧填充或截断序列数据,请设置SequencePaddingDirection
选项“正确”
.
有关填充、截断和分隔输入序列的效果的详细信息,请参见序列填充,截断和分割.
SequencePaddingValue
- - - - - -填充序列的值
0
(默认)|标量
用于填充输入序列的值,指定为标量。
该选项仅当SequenceLength
是“最长”
或者一个正整数。不垫序列用南
,因为这样做会在整个网络中传播错误。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
输出参数
Y
-预测船级标签
分类向量|单元数组的分类向量
预测的类标签,作为分类向量或分类向量的单元格数组返回。的格式Y
这取决于任务的类型。
分类任务的格式如下表所示。
任务 | 格式 |
---|---|
图像或特征分类 | N-by-1的标签分类向量,其中N是观测的数量 |
Sequence-to-label分类 | |
Sequence-to-sequence分类 | N标签分类序列的-by-1单元格数组,其中N是观测的数量。后的相应输入序列具有相同数量的时间步长 对于单次观测的序列到序列分类任务, |
分数
-预测班级成绩
矩阵|单元阵列矩阵
预测分数或反应,以矩阵或矩阵单元格数组的形式返回。的格式分数
这取决于任务的类型。
的格式说明如下表所示分数
.
任务 | 格式 |
---|---|
图像分类 | N——- - - - - -K矩阵,N观察的次数和K是课程的数量吗 |
Sequence-to-label分类 | |
功能分类 | |
Sequence-to-sequence分类 | N矩阵的-by-1单元数组,其中N是观测的数量。序列是矩阵K行,K是类的数量。后的相应输入序列具有相同数量的时间步长 |
对于单次观测的序列到序列分类任务,序列
可以是矩阵。在这种情况下,分数
是预测班级分数的矩阵。
有关探索分类分数的示例,请参见使用深度学习对网络摄像头图像进行分类.
算法
当你训练一个网络使用trainNetwork
函数,或者当您使用预测或验证函数时DAGNetwork
而且SeriesNetwork
对象,该软件使用单精度浮点运算来执行这些计算。用于训练、预测和验证的函数包括trainNetwork
,预测
,分类
,激活
.当您使用cpu和gpu训练网络时,该软件使用单精度算法。
选择
若要使用具有多个输出层的网络对数据进行分类,请使用预测
函数,并设置ReturnCategorical
选项1
(真正的)。
要计算预测的分类分数,还可以使用预测
函数。
要从网络层计算激活,请使用激活
函数。
对于循环网络,例如LSTM网络,您可以使用classifyAndUpdateState
而且predictAndUpdateState
.
参考文献
[1]工藤,美一,富山俊,新保真。“使用穿过区域的多维曲线分类”模式识别信20日,没有。11-13(1999年11月):1103-11。https://doi.org/10.1016/s0167 - 8655 (99) 00077 - x.
[2]UCI机器学习库:日语元音数据集.https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels.
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
c++代码生成支持以下语法:金宝app
[Y,分数]=分类(网络,图像)
,在那里图片
是数值数组[Y,分数]=分类(净,序列)
,在那里序列
是单元格数组[Y,分数]=分类(网,特征)
,在那里特性
是数值数组[Y,scores] = category (__,Name=Value)
使用任何前面的语法。
的c++代码生成
分类
函数不支持回归网络和多输出网络。金宝app对于矢量序列输入,在代码生成过程中特征的数量必须是一个常数。序列长度可以是可变大小的。
对于图像序列输入,在代码生成过程中,高度、宽度和通道数必须为常数。
只有
MiniBatchSize
,SequenceLength
,SequencePaddingDirection
,SequencePaddingValue
代码生成支持名称-值对参数。金宝app所有的名称-值对必须是编译时常量。只有
“最长”
而且“最短”
选项SequenceLength
代码生成支持名称-值对。金宝app如果使用8.2或更高版本的GCC C/ c++编译器,则可能会得到一个
-Wstringop-overflow
警告。Intel代码生成®MKL-DNN靶不支持组合金宝app
SequenceLength =“最长”
,SequencePaddingDirection =“左”
,SequencePaddingValue = 0
名称-值参数。
GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。
使用注意事项和限制:
GPU代码生成支持以下语法:金宝app
Y =分类(网络,图像)
,在那里图片
是数值数组Y =分类(净,序列)
,在那里序列
是单元格数组还是数字数组Y =分类(网络,特征)
,在那里特性
是数值数组[Y,分数]=分类(__)
使用任何前面的语法。[Y,scores] = category (__,Name=Value)
使用任何前面的语法。
GPU代码生成的
分类
函数不支持回归网络和多输出网络。金宝app不支持GPU代码生成金宝app
gpuArray
的输入分类
函数。cuDNN库支持向量和二维图像序列。金宝appTensorRT库只支持向量输入序列。金宝app手臂®
计算库
for GPU不支持循环网络。金宝app对于矢量序列输入,在代码生成过程中特征的数量必须是一个常数。序列长度可以是可变大小的。
对于图像序列输入,在代码生成过程中,高度、宽度和通道数必须为常数。
只有
MiniBatchSize
,SequenceLength
,SequencePaddingDirection
,SequencePaddingValue
代码生成支持名称-值对参数。金宝app所有的名称-值对必须是编译时常量。只有
“最长”
而且“最短”
选项SequenceLength
代码生成支持名称-值对。金宝appGPU代码生成的
分类
函数支持定义为半精金宝app度浮点数据类型的输入。有关更多信息,请参见一半
(GPU编码器).如果使用8.2或更高版本的GCC C/ c++编译器,则可能会得到一个
-Wstringop-overflow
警告。
自动平行支撑金宝app
通过使用并行计算工具箱™自动并行运行计算来加速代码。
要并行运行计算,请设置ExecutionEnvironment
选项“multi-gpu”
或“平行”
.
详细信息请参见并行、gpu和云中扩展深度学习.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
当输入数据为
gpuArray
的单元格数组或表gpuArray
数据,或返回的数据存储gpuArray
数据,ExecutionEnvironment
选项必须是“汽车”
或“图形”
.
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。