主要内容

激活

计算深度学习网络层激活

描述

您可以在CPU或GPU上计算深度学习网络层激活。使用GPU需要并行计算工具箱和CUDA®使英伟达®GPU,计算能力3.0或更高。使用ExecutionEnvironment名称-值对的论点。

行为=激活(洛桑国际管理发展学院使用经过训练的网络返回特定层的网络激活以及图像数据存储中的图像数据洛桑国际管理发展学院

行为=激活(ds使用数据存储中的数据返回网络激活ds

行为=激活(X使用数字数组中的图像或特征数据返回网络激活X

行为=激活(, X1,…,XN)为数字数组中的数据返回网络激活X1、……XN用于多输入网络.输入西对应网络输入net.InputNames(我)

行为=激活(序列返回循环网络(例如LSTM或GRU网络)的网络激活情况,其中序列包含序列或时间序列预测器。

行为=激活(资源描述使用表中的数据返回网络激活资源描述

例子

行为=激活(___名称,值返回带有由一个或多个名称-值对参数指定的附加选项的网络激活。例如,“OutputAs”、“行”指定激活输出格式为“行”.在所有其他输入参数之后指定名称-值对参数。

例子

全部折叠

这个例子展示了如何从预先训练的卷积神经网络中提取学习到的图像特征,并使用这些特征来训练图像分类器。特征提取是利用预先训练的深度网络的表征能力的最简单和最快的方法。例如,您可以使用以下方法训练支持向量机(SVM)万博1manbetxfitcecoc(Statistics and Machine Learning Toolbox™)。因为特征提取只需要对数据进行一次遍历,所以如果你没有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);i = 1:16 i {i} = readimage(imdsTrain,idx(i));结束图imshow (imtile(我))

负载Pretrained网络

加载一个预先训练的AlexNet网络。如果是深度学习工具箱模型AlexNet网络万博1manbetx支持包未安装,则软件提供下载链接。AlexNet对100多万幅图像进行了训练,可以将图像分为1000个对象类别。例如,键盘、鼠标、铅笔和许多动物。因此,该模型学习了丰富的特征表示范围广泛的图像。

网= alexnet;

显示网络结构。该网络有5个卷积层和3个完全连接层。

网。层
ans = 25x1 Layer array with layers:227 x227x3数据的图像输入图像的zerocenter正常化2 conv1卷积96年11 x11x3旋转步[4 4]和填充[0 0 0 0]3‘relu1 ReLU ReLU 4“norm1”横通道正常化横通道规范化5频道每个元素5“pool1”马克斯池3 x3 Max池步(2 - 2)和填充[0 0 0 0]6conv2的分组卷积2组128 5 x5x48旋转步[1]和填充(2 2 2 2)7的relu2 ReLU ReLU 8 norm2的横通道正常化横通道正常化与5频道/元素9“pool2”马克斯池3 x3马克斯池步(2 - 2)和填充[0 0 0 0]384 3 x3x256 conv3的卷积运算步伐[1]和填充[1 1 1 1]11的relu3 ReLU ReLU 12“conv4”分组卷积2组192 3 x3x192旋转步[1]和填充[1 1 1 1]13的relu4 ReLU ReLU 14“conv5”分组卷积2组128 3 x3x192旋转步[1]和填充[1 1 1 1]15 ' relu5 ReLU ReLU 16 pool5马克斯池3 x3 Max池与步幅[2 2]和填充[0 0 0 0]17 fc6完全连接4096完全连接层18“relu6”ReLU ReLU 19“drop6”辍学50%辍学20 fc7完全连接4096完全连接层21“relu7”ReLU ReLU 22“drop7”辍学50%辍学23 fc8完全连接1000完全连接层24“概率”Softmax Softmax 25“输出”输出与'tench'和999其他类交叉

第一层,图像输入层,需要输入尺寸为227 × 227 × 3的图像,其中3是彩色通道的数量。

.InputSize inputSize = net.Layers (1)
inputSize =1×3227 227 3

提取图像特征

该网络构建了输入图像的层次表示。较深的层包含使用较早层的较低层次特性构造的较高层次特性。要获得训练和测试图像的特征表示,使用激活在完全连接的层上“fc7”.要获得图像的低级表示,请使用网络中较早的一层。

网络需要大小为227 × 227 × 3的输入图像,但图像数据存储中的图像大小不同。要在将训练和测试图像输入到网络之前自动调整其大小,请创建扩展的图像数据存储,指定所需的图像大小,并使用这些数据存储作为输入参数激活

augimdsTrain = augmentedImageDatastore (inputSize (1:2), imdsTrain);augimdsTest = augmentedImageDatastore (inputSize (1:2), imdsTest);层=“fc7”;featuresTrain =激活(净、augimdsTrain层,“OutputAs”“行”);featuresTest =激活(净、augimdsTest层,“OutputAs”“行”);

从训练和测试数据中提取类标签。

YTrain = imdsTrain.Labels;欧美= imdsTest.Labels;

适合图像分类器

利用从训练图像中提取的特征作为预测变量,拟合出多类支持向量机万博1manbetxfitcecoc统计学和机器学习工具箱。

mdl = fitcecoc (featuresTrain YTrain);

测试图像进行分类

使用训练的SVM模型和从测试图像中提取的特征对测试图像进行分类。

featuresTest YPred =预测(mdl);

显示四个样本测试图像与他们的预测标签。

Idx = [1 5 10 15];数字i = 1:numel(idx) subplot(2,2,i) i = readimage(imdsTest,idx(i));标签= YPred (idx (i));imshow (I)标题(标签)结束

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

精度=平均值(YPred == YTest)
精度= 1

该支持向量机具有较高的准确率。如果使用特征提取的准确率不够高,那么可以尝试迁移学习。

输入参数

全部折叠

训练有素的网络,指定为SeriesNetwork或者一个DAGNetwork对象。您可以通过导入一个预先训练过的网络(例如,使用googlenet功能)或通过训练自己的网络使用trainNetwork

图像数据存储,指定为ImageDatastore对象。

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

提示

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

请勿使用readFcn选择imageDatastore对于预处理或调整大小,这个选项通常非常慢。

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

网络体系结构 数据存储输出 示例输出
单输入

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

表元素必须是标量、行向量或包含数字数组的1 × 1单元格数组。

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

data =阅读(ds)
data = 4×1 table Predictors __________________ {224×224×3 double} {224×224×3 double} {224×224×3 double} {224×224×3 double}
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列指定每个输入的预测器。

输入的顺序由InputNames网络的属性。

data =阅读(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数字数组,hw,c分别为图像的高度、宽度和通道数量。

三维图像

h——- - - - - -w——- - - - - -d——- - - - - -c数字数组,hwd,c分别为图像的高度、宽度、深度和通道数量。

向量序列

c——- - - - - -年代矩阵,c数列的特征数是和吗年代为序列长度。

二维图像序列

h——- - - - - -w——- - - - - -c——- - - - - -年代数组,hw,c分别对应图像的高度、宽度和通道数量,和年代为序列长度。

mini-batch中的每个序列必须具有相同的序列长度。

三维图像序列

h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代数组,hwd,c分别对应图像的高度、宽度、深度和通道数量,和年代为序列长度。

mini-batch中的每个序列必须具有相同的序列长度。

特性

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

有关更多信息,请参见用于深度学习的数据存储

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

输入 描述
二维图像 一个h——- - - - - -w——- - - - - -c——- - - - - -N数字数组,hw,c图像的高度、宽度和通道数量分别是和吗N为图像的个数。
三维图像 一个h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -N数字数组,hwd,c图像的高度、宽度、深度和通道数量分别是和吗N为图像的个数。
特性 一个N——- - - - - -numFeatures数字数组,N观察的次数是多少numFeatures为输入数据的特征个数。

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

对于具有多个输入的网络,可以指定多个数组X1、……XN,在那里N是网络输入数和输入数吗西对应网络输入net.InputNames(我)

对于图像输入,如果“OutputAs”选择是“渠道”,然后是输入数据中的图像X可以大于网络的图像输入层的输入尺寸。对于其他输出格式,在X必须与网络的图像输入层的输入大小相同。

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

对于单元格数组或数字数组输入,包含序列的数字数组的维数取决于数据类型。

输入 描述
向量序列 c——- - - - - -年代矩阵,c序列的特征数是和吗年代为序列长度。
二维图像序列 h——- - - - - -w——- - - - - -c——- - - - - -年代数组,hw,c分别对应图像的高度、宽度和通道数量,和年代为序列长度。
三维图像序列 h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代,在那里hwd,c分别为三维图像通道的高度、宽度、深度和数量年代为序列长度。

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

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

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

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

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

在单个列中指定预测器。

特性数据

数字标量。

指定预测numFeatures表的列,其中numFeatures为输入数据的特征个数。

这个参数支持只有一个输入的网万博1manbetx络。

数据类型:表格

要从中提取激活的层,指定为数字索引或字符向量。

计算a的激活SeriesNetwork对象,使用其数字索引指定该层,或作为对应于该层名称的字符向量。

计算a的激活DAGNetwork对象,指定该层作为对应层名的字符向量。如果该层有多个输出,指定该层和输出作为层名,后面跟着字符" / ",后面跟着层输出的名称。也就是说,形式是“layerName / outputName”

例子:3.

例子:“conv1”

例子:“mpool /出”

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:激活(净,X,层,“OutputAs”,“行”)

输出激活的格式,指定为逗号分隔对,由“OutputAs”,要么“渠道”“行”,或“列”.有关不同输出格式的描述,请参见行为

对于图像输入,如果“OutputAs”选择是“渠道”,然后是输入数据中的图像X可以大于网络的图像输入层的输入尺寸。对于其他输出格式,在X必须与网络的图像输入层的输入大小相同。

例子:“OutputAs”、“行”

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

例子:“MiniBatchSize”,256年

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

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

  • “最短”-截断每个小批中的序列,使其长度与最短序列相同。这个选项确保不添加任何填充,代价是丢弃数据。

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

要了解更多关于填充、截断和分割输入序列的效果,请参见序列填充、截断和分割

例子:“SequenceLength”、“最短的

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

例子:“SequencePaddingValue”,1

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

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

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

因为LSTM层处理序列数据的时间一步一次,当层OutputMode属性是“最后一次”,最后时间步骤中的任何填充都会对层输出产生负面影响。要在左侧填充或截断序列数据,请设置“SequencePaddingDirection”选项“左”

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

要了解更多关于填充、截断和分割输入序列的效果,请参见序列填充、截断和分割

性能优化,指定为逗号分隔对组成“加速”以及以下其中之一:

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

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

  • “没有”—禁用所有加速功能。

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

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

墨西哥人的选项根据函数调用中使用的网络和参数生成并执行一个MEX函数。您可以同时拥有多个与单个网络相关联的MEX函数。清除网络变量还将清除与该网络关联的任何MEX函数。

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

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

墨西哥人的选项不支持具有多个输入层或多个输万博1manbetx出层的网络。

你不能使用MATLAB编译器™在使用时部署网络墨西哥人的选择。

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

硬件资源,指定为逗号分隔对组成“ExecutionEnvironment”以及以下其中之一:

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

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

  • “cpu”—使用CPU。

例子:“ExecutionEnvironment”、“cpu的

输出参数

全部折叠

来自网络层的激活,作为数字数组或数字数组的单元格数组返回。的格式行为取决于输入数据的类型,层输出的类型,以及“OutputAs”选择。

图像或折叠序列输出

如果该层输出图像或折叠序列数据,则行为是一个数字数组。

“OutputAs” 行为
“渠道”

对于二维图像输出,行为是一个h——- - - - - -w——- - - - - -c——- - - - - -n数组,hw,c所选图层的输出通道的高度、宽度和数量分别是多少n为图像的个数。在这种情况下,法》(::,:,我)控件的激活th形象。

对于3d图像输出,行为是一个h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -n数组,hwd,c所选图层的高度、宽度、深度和输出通道的数量分别是多少n为图像的个数。在这种情况下,法案(::,:,:,我)控件的激活th形象。

对于折叠的二维图像序列输出,行为是一个h——- - - - - -w——- - - - - -c————(n年代)数组,hw,c分别为所选层的输出通道的高度、宽度和数量,n是序列的个数,和年代为序列长度。在这种情况下,法》(:,:,:,(t - 1) * n + k)包含时间步长的激活tk序列。

对于折叠的三维图像序列输出,行为是一个h——- - - - - -w——- - - - - -d——- - - - - -c————(n年代)数组,hwd,c分别为所选图层输出的高度、宽度、深度和通道数量,n是序列的个数,和年代为序列长度。在这种情况下,行为 (:,:,:,:,( t - 1) * n + k)包含时间步长的激活tk序列。

“行”

对于二维和三维图像输出,行为是一个n——- - - - - -矩阵,n图像的数量是和吗是该层的输出元素的数量。在这种情况下,法案(我,:)控件的激活th形象。

对于折叠的二维和三维图像序列输出,行为是一个(n年代)———矩阵,n为序列的个数,年代是序列长度,和是该层的输出元素的数量。在这种情况下,法》((t - 1) * n + k,:)包含时间步长的激活tk序列。

“列”

对于二维和三维图像输出,行为是一个——- - - - - -n矩阵,是所选层的输出元素的数量,和n为图像的个数。在这种情况下,法》(:,我)控件的激活th形象。

对于折叠的二维和三维图像序列输出,行为是一个————(n年代)矩阵,是所选层的输出元素的数量,n是序列的个数,和年代为序列长度。在这种情况下,法案(:,(t - 1) * n + k)包含时间步长的激活tk序列。

顺序输出

如果具有序列输出(例如,具有输出模式的LSTM层“序列”),然后行为是单元格数组。在这种情况下“OutputAs”选项必须是“渠道”

“OutputAs” 行为
“渠道”

对于向量序列输出,行为是一个n-by-1 cell arrayc——- - - - - -年代矩阵,n为序列的个数,c是序列中特征的个数,和年代为序列长度。

对于二维图像序列输出,行为是一个n-by-1 cell arrayh——- - - - - -w——- - - - - -c——- - - - - -年代矩阵,n为序列的个数,hw,c图像的高度、宽度和通道数量分别是和吗年代为序列长度。

对于三维图像序列输出,行为是一个n-by-1 cell arrayh——- - - - - -w——- - - - - -c——- - - - - -d——- - - - - -年代矩阵,n为序列的个数,hwd,c图像的高度、宽度、深度和通道数量分别是和吗年代为序列长度。

在这些情况下,行为{我}包含的激活序列。

单一时间步输出

如果输出序列的单个时间步长(例如,具有输出模式的LSTM层)“最后一次”),然后行为是一个数字数组。

“OutputAs” 行为
“渠道”

对于包含矢量数据的单个时间步长,行为是一个c——- - - - - -n矩阵,n序列的个数是和吗c为序列中特征的个数。

对于包含二维图像数据的单个时间步长,行为是一个h——- - - - - -w——- - - - - -c——- - - - - -n数组,n为序列的个数,hw,c分别为图像的高度、宽度和通道数量。

对于包含三维图像数据的单一时间步长,行为是一个h——- - - - - -w——- - - - - -c——- - - - - -d——- - - - - -n数组,n为序列的个数,hwd,c分别为图像的高度、宽度、深度和通道数量。

“行” n——- - - - - -矩阵,n是观察的次数,和是所选层的输出元素的数量。在这种情况下,法案(我,:)控件的激活序列。
“列” ——- - - - - -n矩阵,是所选层的输出元素的数量,和n为观察次数。在这种情况下,法》(:,我)控件的激活th形象。

算法

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

参考文献

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

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

扩展功能

介绍了R2016a