计算深度学习网络层激活
你可以计算深度学习网络层激活一个CPU或GPU。使用GPU需要并行计算工具箱™和支持GPU设备。金宝app支持设备的信息,请参阅金宝appGPU的金宝app支持版本(并行计算工具箱)。指定使用的硬件需求ExecutionEnvironment
名称-值对的论点。
这个例子展示了如何提取图像特征认识从pretrained卷积神经网络,训练一个图像分类器,并使用这些特性。特征提取是最简单和最快的方式使用pretrained深层网络的表征能力。例如,您可以使用训练支持向量机(SVM)金宝appfitcecoc
(统计和机器学习的工具箱™)提取的特征。因为特征提取只需要一个通过数据,这是一个很好的起点,如果你没有一个GPU加速网络训练。
加载数据
解压缩和加载示例图像作为图像数据存储。imageDatastore
自动标签图像基于文件夹的名字和存储数据作为ImageDatastore
对象。图像数据存储可以存储大量图像数据,包括数据,并不适合在内存中。把数据分成70%的训练,30%测试数据。
解压缩(“MerchData.zip”);imd = imageDatastore (“MerchData”,…“IncludeSubfolders”,真的,…“LabelSource”,“foldernames”);[imdsTrain, imdsTest] = splitEachLabel (imd, 0.7,“随机”);
这个非常小的数据集有55个训练图像和20验证图像。显示一些示例图像。
numImagesTrain =元素个数(imdsTrain.Labels);idx = randperm (numImagesTrain 16);我= imtile (imd,“帧”,idx);图imshow(我)
负载Pretrained网络
加载一个pretrained SqueezeNet网络。SqueezeNet培训超过一百万张图片,可以分类图像到1000年对象类别,例如,键盘,鼠标,铅笔,和许多动物。结果,模型已经学会丰富广泛的图像特征表示。
网= squeezenet;
分析网络体系结构。
analyzeNetwork(净)
图像输入层,第一层要求输入的图像大小227 - 227 - 3,3是颜色通道的数量。
.InputSize inputSize = net.Layers (1)
inputSize =1×3227 227 3
提取图像特征
网络结构的层次化表示输入图像。深层包含更高层次特性,构造使用以前的低层次特征层。的训练和测试的特征表示图像,使用激活
全球平均池层“pool10”
。得到的低水平表示图像,使用早期层网络。
网络需要输入的图像大小227 - 227 - 3,但图像的图像数据存储有不同的大小。自动调整训练和测试图像输入到网络之前,创建增强图像数据存储,指定所需的图像大小,和使用这些数据存储作为输入参数激活
。
augimdsTrain = augmentedImageDatastore (inputSize (1:2), imdsTrain);augimdsTest = augmentedImageDatastore (inputSize (1:2), imdsTest);层=“pool10”;featuresTrain =激活(净、augimdsTrain层,“OutputAs”,“行”);featuresTest =激活(净、augimdsTest层,“OutputAs”,“行”);
提取类标签的训练和测试数据。
YTrain = imdsTrain.Labels;欧美= imdsTest.Labels;
适合图像分类器
使用从训练图像提取的特征作为预测变量和适应多类支持向量机(SVM)使用金宝appfitcecoc
(统计和机器学习的工具箱)。
mdl = fitcecoc (featuresTrain YTrain);
测试图像进行分类
使用训练SVM模型分类测试图像和测试图像的特征提取。
featuresTest YPred =预测(mdl);
显示四个样品的测试图像与他们预测标签。
idx = [1 5 10 15];图为i = 1:元素个数(idx)次要情节(2,2,我)我= readimage (imdsTest idx (i));标签= YPred (idx (i));imshow (I)标题(标签)结束
计算测试集上的分类精度。精度是标签的一部分网络预测正确。
精度=意味着(YPred = =次)
精度= 1
这SVM具有较高的精度。如果使用特征提取精度不够高,然后试着转移学习。
净
- - - - - -训练网络SeriesNetwork
对象|DAGNetwork
对象训练网络,作为一个指定SeriesNetwork
或者一个DAGNetwork
对象。你可以通过导入pretrained训练网络的网络(例如,通过使用googlenet
函数)或通过训练自己的网络使用trainNetwork
。
洛桑国际管理发展学院
- - - - - -图像数据存储ImageDatastore
对象图像数据存储,指定为一个ImageDatastore
对象。
ImageDatastore
允许分批阅读使用预取JPG和PNG图像文件。如果你使用一个自定义函数读取图像,然后ImageDatastore
不预取。
ds
- - - - - -数据存储数据存储的内存不足数据和预处理。数据存储必须返回一个表或一个单元阵列中的数据。数据存储的格式输出取决于网络体系结构。
网络体系结构 | 数据存储输出 | 示例输出 |
---|---|---|
单输入 | 表或单元阵列,第一列指定了预测。 表格元素必须标量、行向量或1×1细胞数组包含一个数字数组。 自定义数据存储必须输出表。 |
data =阅读(ds) data = 4×1表预测_____________{224×224×3双}{224×224×3双}{224×224×3双}{224×224×3双} |
data =阅读(ds) data = 4×1单元阵列{224×224×3双}{224×224×3双}{224×224×3双}{224×224×3双} |
||
多个输入 | 单元阵列至少 第一个 输入的顺序的 |
data =阅读(ds) data = 4×2单元阵列{224×224×3双}{128×128×3双}{224×224×3双}{128×128×3双}{224×224×3双}{128×128×3双}{224×224×3双}{128×128×3双} |
预测的格式取决于类型的数据。
数据 | 格式的预测 |
---|---|
二维图像 | h——- - - - - -w——- - - - - -c数字数组,h,w,c高度,宽度,分别和通道图像的数量。 |
三维图像 | h——- - - - - -w——- - - - - -d——- - - - - -c数字数组,h,w,d,c的高度、宽度、深度,分别和通道图像的数量。 |
向量序列 | c——- - - - - -年代矩阵,c序列的特性和吗年代是序列长度。 |
一维图像序列 | h——- - - - - -c——- - - - - -年代数组,h和c对应于图像的高度和数量的渠道,分别年代是序列长度。 mini-batch中的每个序列必须具有相同的序列长度。 |
二维图像序列 | h——- - - - - -w——- - - - - -c——- - - - - -年代数组,h,w,c对应的高度、宽度和通道图像的数量,分别年代是序列长度。 mini-batch中的每个序列必须具有相同的序列长度。 |
三维图像序列 | h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代数组,h,w,d,c对应的高度、宽度、深度和通道图像的数量,分别年代是序列长度。 mini-batch中的每个序列必须具有相同的序列长度。 |
特性 | c1列向量,c的数量特征。 |
有关更多信息,请参见数据存储深度学习。
X
- - - - - -图像或特征数据图像或特征数据,指定为一个数字数组。数组的大小取决于类型的输入:
输入 | 描述 |
---|---|
二维图像 | 一个h——- - - - - -w——- - - - - -c——- - - - - -N数字数组,h,w,c高度,宽度,和数字通道的图像,分别和N是图片的数量。 |
三维图像 | 一个h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -N数字数组,h,w,d,c的高度、宽度、深度和通道的图像,分别和N是图片的数量。 |
特性 | 一个N——- - - - - -numFeatures 数字数组,N是观察和的数量吗numFeatures 是功能的输入数据的数量。 |
如果数组包含南
年代,然后通过网络传播。
对于网络有多个输入,您可以指定多个数组X1
、…XN
,在那里N
网络的输入和输入的数量吗习
对应于网络的输入net.InputNames(我)
。
图像输入,如果“OutputAs”
选择是“渠道”
在输入数据,那么图像X
可以大于输入大小的图像网络的输入层。其他的输出格式,图片X
必须具有相同的大小作为输入图像网络的输入层的大小。
序列
- - - - - -顺序或时间序列数据顺序或时间序列数据,指定为一个N1单元阵列的数字数组,N是观测的数量,一个数值数组代表一个序列,或数据存储。
细胞数组或数字数组输入,包含序列的数值数组的尺寸取决于类型的数据。
输入 | 描述 |
---|---|
向量序列 | c——- - - - - -年代矩阵,c的特征序列的数量和吗年代是序列长度。 |
一维图像序列 | h——- - - - - -c——- - - - - -年代数组,h和c对应于图像的高度和数量的渠道,分别年代是序列长度。 |
二维图像序列 | h——- - - - - -w——- - - - - -c——- - - - - -年代数组,h,w,c对应的高度、宽度和通道的图像,分别年代是序列长度。 |
三维图像序列 | h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代,在那里h,w,d,c对应高度、宽度、深度和通道数量的3 d图像,分别年代是序列长度。 |
数据存储输入的数据存储必须返回数据作为一个单元阵列的序列或表的第一列包含序列。序列数据的尺寸必须与上面的表相对应。
资源描述
- - - - - -图像或特征数据的表表
图像或特征数据的表。表中的每一行对应一个观察。
预测表中列的安排取决于输入数据的类型。
输入 | 预测 |
---|---|
图像数据 |
在单个列指定预测。 |
特性数据 | 数字标量。 指定在第一个预测因子 |
这个论点支持网络的一个输入。金宝app
数据类型:表
层
- - - - - -层提取激活层提取激活,指定为一个数字索引或一个特征向量。
计算的激活SeriesNetwork
对象,指定层使用数值指数,或作为一个特征向量对应层的名字。
计算的激活DAGNetwork
对象,指定层作为特征向量对应层的名字。如果层有多个输出,指定层和输出层的名字,其次是性格“/”,紧随其后的是输出层的名称。也就是说,层
的形式“layerName / outputName”
。
例子:3
例子:“conv1”
例子:“mpool /出”
指定可选的逗号分隔条名称,值
参数。的名字
参数名称和吗价值
相应的价值。的名字
必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家
。
激活(净,X,层,“OutputAs”,“行”)
MiniBatchSize
- - - - - -mini-batches大小大小mini-batches用于预测,指定为一个正整数。大mini-batch大小需要更多的内存,但会导致更快的预测。
例子:“MiniBatchSize”, 256年
SequenceLength
- - - - - -选项板、截断或拆分输入序列“最长”
(默认)|“最短”
|正整数选项板、截断或分裂的输入序列,指定为以下之一:
“最长”
——在每个mini-batch垫序列有相同的长度最长的序列。这个选项不丢弃任何数据,尽管填充网络会引入噪声。
“最短”
——在每个mini-batch截断序列有相同的长度最短的序列。这个选项可以确保没有添加填充物,在丢弃的成本数据。
正整数,对于每个mini-batch,垫到最近的多个序列的最长长度大于指定mini-batch序列长度,然后把序列分割成较小的指定长度的序列。如果发生分裂,那么软件创建额外的mini-batches。使用这个选项如果完整的序列不适合在内存中。或者,试着减少序列的数量每mini-batch通过设置“MiniBatchSize”
选择一个较低的值。
了解更多关于填充的效果,删除,并把输入序列,明白了序列填充、截断和分裂。
例子:“SequenceLength”、“最短的
SequencePaddingValue
- - - - - -价值垫输入序列盘输入序列值,指定为一个标量。选择是有效的只有当SequenceLength
是“最长”
或者一个正整数。不垫序列南
,因为这样做可以传播在整个网络错误。
例子:“SequencePaddingValue”, 1
SequencePaddingDirection
- - - - - -填充方向或截断“对”
(默认)|“左”
填充方向或截断,指定为以下之一:
“对”
——垫或截断序列在右边。序列开始在同一时间步和软件截断或添加填充序列的结束。
“左”
——垫或截断序列在左边。软件截断或添加填充序列,序列的开始结束同时一步。
因为LSTM层过程序列数据一次一个时间步,当层OutputMode
属性是“最后一次”
,任何填充在最后时间步可以负面影响层的输出。垫或截断左边序列数据,设置“SequencePaddingDirection”
选项“左”
。
sequence-to-sequence网络(当OutputMode
属性是“序列”
对于每个LSTM层),任何填充在第一次的步骤可以负面影响的预测更早的时间步骤。垫或截断序列数据在右边,设置“SequencePaddingDirection”
选项“对”
。
了解更多关于填充的效果,删除,并把输入序列,明白了序列填充、截断和分裂。
加速度
- - - - - -性能优化“汽车”
(默认)|墨西哥人的
|“没有”
性能优化,指定为逗号分隔组成的“加速”
和下列之一:
“汽车”
——自动应用一些优化适合输入网络和硬件资源。
墨西哥人的
——编译和执行一个墨西哥人的功能。此选项仅在使用GPU可用。使用GPU需要并行计算工具箱和支持GPU设备。金宝app支持设备的信息,请参阅金宝appGPU的金宝app支持版本(并行计算工具箱)。如果并行计算工具箱或合适的GPU不可用,那么软件返回一个错误。
“没有”
——禁用所有加速度。
默认的选项是“汽车”
。如果“汽车”
MATLAB是指定的,®将大量的兼容优化。如果你使用“汽车”
选项,MATLAB不生成一个墨西哥人的功能。
使用“加速”
选项“汽车”
和墨西哥人的
可以提供性能优势,但在初始运行时间增加为代价的。后续调用与兼容的参数是更快。使用性能优化计划多次调用该函数时使用新的输入数据。
的墨西哥人的
选项生成并执行一个墨西哥人函数基于网络和参数在函数调用中使用。你可以有几个墨西哥人函数与一个网络。结算网络变量也清除任何墨西哥人功能与网络有关。
的墨西哥人的
选项仅当你使用GPU。墨西哥人加速支持单GPU执行使用名金宝app称-值选项“ExecutionEvironment”、“gpu的
只有。
使用墨西哥人的
选择,你必须有一个C / c++编译器安装和GPU编码器™界面深度学习库支持包。金宝app安装包使用MATLAB中金宝app的扩展浏览器的支持。设置说明,请参阅墨西哥人设置(GPU编码器)。GPU编码器不是必需的。
的墨西哥人的
选项不支持所有层。金宝app支持层的列表,请参阅金宝app金宝app支持层(GPU编码器)。只有网络与一个imageInputLayer
都受支持金宝app。
你不能使用MATLAB编译器™当使用部署您的网络墨西哥人的
选择。
例子:“加速”、“墨西哥人的
ExecutionEnvironment
- - - - - -硬件资源“汽车”
(默认)|“图形”
|“cpu”
|“multi-gpu”
|“平行”
硬件资源,指定为逗号分隔组成的“ExecutionEnvironment”
和下列之一:
“汽车”
——使用GPU如果可用;否则,使用CPU。
“图形”
——使用GPU。使用GPU需要并行计算工具箱和支持GPU设备。金宝app支持设备的信息,请参阅金宝appGPU的金宝app支持版本(并行计算工具箱)。如果并行计算工具箱或合适的GPU不可用,那么软件返回一个错误。
“cpu”
——使用CPU。
“multi-gpu”
使用多个gpu在一台机器上,使用本地集群并行池基于默认概要文件。如果没有当前并行池,软件开始平行池,池大小等于可用gpu的数量。
“平行”
——使用一个本地或远程并行池集群基于默认概要文件。如果没有当前并行池,集群软件开始使用默认概要文件。如果池访问GPU,那么只有工人有着独特的GPU执行计算。如果池没有gpu,那么计算发生在所有可用的CPU的工人。
更多信息在何时使用不同的执行环境,明白了并行扩展深度学习,在gpu上,在云端。
“图形”
,“multi-gpu”
,“平行”
选择需要并行计算工具箱。使用GPU深度学习,你也必须有一个支持GPU设备。金宝app支持设备的信息,请参阅金宝appGPU的金宝app支持版本(并行计算工具箱)。如果你选择其中一个选项和并行计算工具箱或合适的GPU不可用,那么软件返回一个错误。
的“multi-gpu”
和“平行”
选项不支持递归神经网络(RNN金宝apps)包含lstmLayer
,bilstmLayer
,或gruLayer
对象。
例子:“ExecutionEnvironment”、“cpu的
行为
从网络层——激活从网络层激活,作为数字返回数组或单元格数值数组的数组。的格式行为
取决于类型的输入数据,输出层的类型,“OutputAs”
选择。
如果层输出图像或折叠序列数据,行为
是一个数字数组。
“OutputAs” |
行为 |
---|---|
“渠道” |
对于二维图像输出, 3 d图像输出, 折叠的二维图像序列输出, 折叠的3 d图像序列输出, |
“行” |
2 d和3 d图像输出, 折叠2 d和3 d图像序列输出, |
“列” |
2 d和3 d图像输出, 折叠2 d和3 d图像序列输出, |
如果层
输出序列(例如,LSTM层与输出模式“序列”
),然后行为
是一个单元阵列。在这种情况下,“OutputAs”
选项必须是“渠道”
。
“OutputAs” |
行为 |
---|---|
“渠道” |
为向量序列输出, 对二维图像序列输出, 3 d图像序列输出, 在这些情况下, |
如果层
输出一个时间步的序列(例如,一个LSTM层与输出模式“最后一次”
),然后行为
是一个数字数组。
“OutputAs” |
行为 |
---|---|
“渠道” |
对于包含矢量数据的一个时间步, 对于包含二维图像数据的一个时间步, 对于包含3 d图像数据的一个时间步, |
“行” |
n——- - - - - -米矩阵,n是观测的数量,和米 从选择层是输出元素的数量。在这种情况下,法案(我,:) 包含的激活我 序列。 |
“列” |
米——- - - - - -n矩阵,米从选择层是输出元素的数量,然后呢n是观测的数量。在这种情况下,法》(:,我) 包含的激活我 th形象。 |
当你训练一个网络使用trainNetwork
函数,或者当你使用预测或验证功能DAGNetwork
和SeriesNetwork
对象,软件执行这些计算使用单精度浮点算术。包括功能训练、预测和验证trainNetwork
,预测
,分类
,激活
。软件使用单精度算法训练网络时使用的cpu和gpu。
[1]m .奖赏,富山,和m . Shimbo。“多维曲线分类使用通过地区。”模式识别的字母。11 - 13号20卷,第1111 - 1103页。
[2]UCI机器学习库:日本元音数据集。https://archive.ics.uci.edu/ml/datasets/Japanese +元音
使用笔记和限制:
c++代码生成支持下面的语法:金宝app
行动=激活(净X层)
行动=激活(净、序列、层)
行动=激活(__、名称、值)
输入X
不得有变量的大小。输入的大小必须固定在代码生成时间。
为输入向量序列,在代码生成功能必须是一个常数。序列的长度可以是可变大小的。
图像序列的输入,高度,宽度,和渠道的数量必须在代码生成一个常数。
的层
在代码生成参数必须是一个常数。
只有“OutputAs”
,“MiniBatchSize”
,“SequenceLength”
,“SequencePaddingDirection”
,“SequencePaddingValue”
名称-值对参数支持代码生成。金宝app所有必须编译时常量名称-值对。
输出的格式必须激活“渠道”
。
只有“最长”
和“最短”
选择的“SequenceLength”
名称-值对支持代码生成。金宝app
代码生成的英特尔®MKL-DNN目标不支持的结合金宝app“SequenceLength”,“最长”
,“SequencePaddingDirection”、“左派”
,“SequencePaddingValue”, 0
名称-值参数。
更多信息关于深度学习神经网络的生成代码,看看工作流与MATLAB编码器深度学习代码生成(MATLAB编码器)。
使用笔记和限制:
GPU代码生成支持下面的语法:金宝app
行动=激活(净X层)
行动=激活(净、序列、层)
行动=激活(__、名称、值)
输入X
不得有变量的大小。输入的大小必须固定在代码生成时间。
GPU代码生成不支持金宝appgpuArray
的输入激活
函数。
cuDNN库支持向量和二维图像序列。金宝appTensorRT图书馆只支持向量输入序列。金宝app手臂®计算库
GPU复发不支持网络。金宝app
为输入向量序列,在代码生成功能必须是一个常数。序列的长度可以是可变大小的。
图像序列的输入,高度,宽度,和渠道的数量必须在代码生成一个常数。
的层
在代码生成参数必须是一个常数。
只有“OutputAs”
,“MiniBatchSize”
,“SequenceLength”
,“SequencePaddingDirection”
,“SequencePaddingValue”
名称-值对参数支持代码生成。金宝app所有必须编译时常量名称-值对。
输出的格式必须激活“渠道”
。
只有“最长”
和“最短”
选择的“SequenceLength”
名称-值对支持代码生成。金宝app
GPU代码生成的激活
支持输入函数被定义金宝app为half-precision浮点数据类型。有关更多信息,请参见一半
(GPU编码器)。
当输入数据gpuArray
单元阵列或表包含gpuArray
数据,或者一个返回的数据存储gpuArray
数据,“ExecutionEnvironment”
选项必须是“汽车”
或“图形”
。
有关更多信息,请参见运行在GPU MATLAB函数(并行计算工具箱)。
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。