主要内容

dlconv

深度学习卷积

描述

卷积运算对输入数据应用滑动滤波器。使用dlconv用于深度学习卷积、分组卷积和通道可分离卷积的函数。

dlconv函数将深度学习卷积运算应用于dlarray数据。使用dlarray对象允许您标记维度,从而更容易处理高维数据。属性标记哪些维度对应于空间、时间、通道和批处理维度“S”“T”“C”,“B”标签,分别。对于未指定的维度和其他维度,使用“U”标签。为dlarray对象的函数在特定维度上操作时,可以通过格式化dlarray对象,或者使用DataFormat选择。

请注意

在a中应用卷积layerGraph对象或数组,使用以下图层之一:

例子

Y= dlconv (X权重偏见将深度学习卷积运算应用于格式化的dlarray对象X.该函数使用滑动卷积滤波器权重然后加上常数偏见.输出Y是格式化的dlarray相同格式的X

这个函数,默认情况下,在最多三个维度上卷积X标签“S”(空间)。对标记的维度进行卷积“T”(时间),指定权重与一个“T”使用格式化的dlarray对象或使用WeightsFormat选择。

对于未格式化的输入数据,使用DataFormat选择。

例子

Y= dlconv (X权重偏见, DataFormat = FMT)将深度学习卷积运算应用于未格式化的dlarray对象X的格式,由FMT.输出Y是未格式化的dlarray对象,其维度顺序与X.例如,DataFormat = " SSCB "指定使用格式进行二维卷积的数据“SSCB”(空间,空间,通道,批次)。

例子

Y= dlconv (___名称=值使用一个或多个名称-值对参数(使用前面的任何语法)指定选项。例如,WeightsFormat = " TCU "指定带有格式的1-D卷积的权重“TCU”(时间,渠道,未指明)。

例子

全部折叠

创建格式化的dlarray对象,该对象包含128个28 × 28图像,有3个通道。指定格式“SSCB”(空间,空间,通道,批次)。

miniBatchSize = 128;inputSize = [28 28];numChannels = 3;X = rand(inputSize(1),inputSize(2),numChannels,miniBatchSize);X = dlarray(X,“SSCB”);

查看输入数据的大小和格式。

大小(X)
ans =1×428 28 3 128
dim (X)
ans = 'SSCB'

初始化二维卷积的权值和偏置。对于权重,指定64个3 × 3筛选器。对于偏差,指定一个零向量。

filterSize = [3 3];numFilters = 64;weights = rand(filterSize(1),filterSize(2),numChannels,numFilters);bias = 0 (1,numFilters);

函数应用二维卷积dlconv函数。

Y = dlconv(X,权重,偏差);

查看输出的大小和格式。

大小(Y)
ans =1×426 26 64 128
退去(Y)
ans = 'SSCB'

将输入数据卷积成三组,每组两通道。每组使用四个滤镜。

将输入数据创建为10个观测值,大小为100 × 100,有6个通道。

高度= 100;宽度= 100;通道= 6;numObservations = 10;X = rand(高度,宽度,通道,numObservations);X = dlarray(X,“SSCB”);

初始化卷积滤波器。指定三组卷积,每组卷积对输入数据的两个通道应用四个卷积滤波器。

filterHeight = 8;filterWidth = 8;numChannelsPerGroup = 2;numFiltersPerGroup = 4;numGroups = 3;weights = rand(filterHeight,filterWidth,numChannelsPerGroup,numFiltersPerGroup,numGroups);

初始化偏差项。

bias = rand(numFiltersPerGroup*numGroups,1);

执行卷积。

Y = dlconv(X,权重,偏差);大小(Y)
ans =1×493 93 12 10
退去(Y)
ans = 'SSCB'

卷积输出的12个通道表示三组卷积,每组有四个滤波器。

将输入数据分离为通道,分别对每个通道进行卷积。

将输入数据创建为单个观察值,大小为64 × 64,通道数为10。将数据创建为未格式化数据dlarray

身高= 64;宽度= 64;numChannels = 10;X = rand(高度,宽度,numChannels);X = dlarray(X);

初始化卷积滤波器。指定一个未分组的卷积,对输入数据的所有三个通道应用一个卷积。

filterHeight = 8;filterWidth = 8;numChannelsPerGroup = 1;numFiltersPerGroup = 1;numGroups = numChannels;weights = rand(filterHeight,filterWidth,numChannelsPerGroup,numFiltersPerGroup,numGroups);

初始化偏差项。

bias = rand(numFiltersPerGroup*numGroups,1);

执行卷积。属性指定输入数据的尺寸标签DataFormat选择。

Y = dlconv(X,权重,偏差,DataFormat=“SSC”);大小(Y)
ans =1×357 57 10

每个通道分别进行卷积,因此输出中有10个通道。

创建格式化的dlarray对象,包含128个长度512的序列,包含5个特征。指定格式“认知行为治疗”(通道,批次,时间)。

numChannels = 5;miniBatchSize = 128;sequenceLength = 512;X = rand(numChannels,miniBatchSize, sequencelth);X = dlarray(X,“认知行为治疗”);

初始化一维卷积的权值和偏置。对于权重,指定64个过滤器,过滤器大小为3。对于偏差,指定一个零向量。

filterSize = 3;numFilters = 64;weights = rand(filterSize,numChannels,numFilters);bias = 0 (1,numFilters);

函数应用1-D卷积dlconv函数。卷积“T”(时间)输入数据的维数,指定权重格式“TCU”(时间,通道,未指定)使用WeightsFormat选择。

Y = dlconv(X,权重,偏差,WeightsFormat=“TCU”);

查看输出的大小和格式。

大小(Y)
ans =1×364 128 510
退去(Y)
ans =“CBT”

输入参数

全部折叠

输入数据,指定为格式化的dlarray,一个未格式化的dlarray,或数值数组。

如果X是未格式化的dlarray或数值数组,则必须使用DataFormat选择。如果X是数字数组吗权重偏见一定是dlarray对象。

这个函数,默认情况下,在最多三个维度上卷积X标签“S”(空间)。对标记的维度进行卷积“T”(时间),指定权重与一个“T”使用格式化的dlarray对象或使用WeightsFormat选择。

卷积滤波器,指定为格式化的dlarray,一个未格式化的dlarray,或数值数组。

权重的大小和格式取决于任务的类型。如果权重是未格式化的dlarray或者一个数字数组,那么大小和形状权重取决于WeightsFormat选择。

下表描述了各种任务权重的大小和格式。可以使用格式化方法指定具有任意顺序的维度的数组dlarray对象或使用WeightsFormat选择。当权重具有具有相同标签的多个维度时(例如,多个维度被标记为“S”),则这些尺寸必须按表中所示的顺序排列。

任务 所需的尺寸 大小 例子
权重 格式
一维卷积 “S”(空间)或“T”(时间) 过滤器的大小

filterSize——- - - - - -numChannels——- - - - - -numFilters数组,filterSize为一维滤波器的大小,numChannels输入数据的通道数,和numFilters是过滤器的数量。

“并”(空间,通道,未指明)
“C”(通道) 通道数
“U”(不明) 过滤器数量
一维群卷积 “S”(空间)或“T”(时间) 过滤器的大小

filterSize——- - - - - -numChannelsPerGroup——- - - - - -numFiltersPerGroup——- - - - - -numGroups数组,filterSize为一维滤波器的大小,numChannelsPerGroup是每组输入数据的通道数,numFiltersPerGroup每组过滤器的数量,和numGroups是组的数目。

numChannelsPerGroup必须等于输入数据的通道数除以numGroups

“SCUU”(空间,通道,未指明,未指明)
“C”(通道) 每组通道数
第一个“U”(不明) 每组过滤器的数量
第二个“U”(不明) 组数
二维卷积 第一个“S”(空间) 过滤器的高度

filterSize (1)——- - - - - -filterSize (2)——- - - - - -numChannels——- - - - - -numFilters数组,filterSize (1)而且filterSize (2)分别为二维滤波器的高度和宽度,numChannels输入数据的通道数,和numFilters是过滤器的数量。

“SSCU”(空间,空间,通道,未指明)
第二个“S”(空间)或“T”(时间) 滤波器的宽度
“C”(通道) 通道数
“U”(不明) 过滤器数量
二维分组卷积 第一个“S”(空间) 过滤器的高度

filterSize (1)——- - - - - -filterSize (2)——- - - - - -numChannelsPerGroup——- - - - - -numFiltersPerGroup——- - - - - -numGroups数组,filterSize (1)而且filterSize (2)分别为二维滤波器的高度和宽度,numChannelsPerGroup是每组输入数据的通道数,numFiltersPerGroup每组过滤器的数量,和numGroups是组的数目。

numChannelsPerGroup必须等于输入数据的通道数除以numGroups

“SSCUU”(空间,空间,通道,未指明,未指明)
第二个“S”(空间)或“T”(时间) 滤波器的宽度
“C”(通道) 每组通道数
第一个“U”(不明) 每组过滤器的数量
第二个“U”(不明) 组数
三维卷积 第一个“S”(空间) 过滤器的高度

filterSize (1)——- - - - - -filterSize (2)——- - - - - -filterSize (3)——- - - - - -numChannels——- - - - - -numFilters数组,filterSize (1)filterSize (2),filterSize (3)分别为三维滤波器的高度、宽度和深度,numChannels输入数据的通道数,和numFilters是过滤器的数量。

“SSSCU”(空间,空间,空间,通道,未指明)
第二个“S”(空间) 滤波器的宽度
第三“S”(空间)或“T”(时间) 过滤器深度
“C”(通道) 通道数
“U”(不明) 过滤器数量

对于信道可分离卷积(也称为深度可分离卷积),使用组的数量等于信道的数量的分组卷积。

提示

这个函数,默认情况下,在最多三个维度上卷积X标签“S”(空间)。对标记的维度进行卷积“T”(时间),指定权重与一个“T”使用格式化的dlarray对象或使用WeightsFormat选择。

偏差常数,指定为格式化的dlarray,一个未格式化的dlarray、数字向量或数字标量。

  • 如果偏见为标量,则对每个输出应用相同的偏置。

  • 如果偏见有一个非单维度,那么偏见偏差是否应用于?所指定的相应卷积滤波器权重.元素的个数偏见所指定的筛选器数目必须匹配权重

  • 如果偏见0,则禁用偏置项,在卷积运算过程中不添加偏置。

如果偏见是格式化的dlarray,则非单维必须是带标签的通道维“C”(通道)。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:DilationFactor = 2将每个卷积滤波器的膨胀因子设置为2

未格式化输入数据的维度顺序,指定为字符向量或字符串标量FMT它为数据的每个维度提供了一个标签。

的格式时dlarray对象,每个字符为数据的每个维度提供一个标签,并且必须是以下之一:

  • “S”——空间

  • “C”——频道

  • “B”-批次(例如,样品和观察)

  • “T”-时间(例如序列的时间步长)

  • “U”——未指明的

您可以指定多个有标记的维度“S”“U”.你可以使用标签“C”“B”,“T”最多一次。

您必须指定DataFormat当输入数据未被格式化时dlarray

数据类型:字符|字符串

权重的维度顺序,指定为字符向量或字符串标量,为权重的每个维度提供一个标签。

的默认值WeightsFormat取决于任务:

任务 默认的
一维卷积 “并”(空间,通道,未指明)
一维群卷积 “SCUU”(空间,通道,未指明,未指明)
二维卷积 “SSCU”(空间,空间,通道,未指明)
二维分组卷积 “SSCUU”(空间,空间,通道,未指明,未指明)
三维卷积 “SSSCU”(空间,空间,空间,通道,未指明)

支持的维金宝app度标签组合取决于卷积的类型,有关详细信息,请参阅权重论点。

提示

这个函数,默认情况下,在最多三个维度上卷积X标签“S”(空间)。对标记的维度进行卷积“T”(时间),指定权重与一个“T”使用格式化的dlarray对象或使用WeightsFormat选择。

数据类型:字符|字符串

用于遍历输入数据的步长,指定为数值标量或数值向量。

若要对所有卷积维使用相同的步长,请将步幅指定为标量。若要为每个卷积维度指定不同的值,请将步幅指定为一个向量,其中元素的顺序与数据格式中的维度标签相对应。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

过滤器膨胀系数,指定为数值标量或数值向量。

若要在所有卷积维数中使用膨胀因子,请将膨胀因子指定为标量。若要为每个卷积维度指定不同的值,请将膨胀因子指定为一个向量,其中元素的顺序与数据格式中的维度标签相对应。

使用膨胀因子来增加过滤器在输入数据上的接受域(过滤器可以看到的输入区域)。使用膨胀因子对应于的有效滤镜尺寸filterSize + (filterSize-1)*(dilationFactor-1)

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

的填充大小“S”而且“T”由重量格式给出的尺寸,指定为下列之一:

  • “相同”-应用填充,使输出维度大小为装天花板(inputSize /步),在那里inputSize对应的输入维的大小。当1时,输出与输入大小相同。

  • “因果”-应用左填充与大小(FilterSize - 1).*DilationFactor.此选项仅支持在单个时间或金宝app空间维度上进行卷积。当1时,输出与输入大小相同。

  • 非负整数深圳-添加填充大小深圳到两端“S”“T”由权重的格式给出的尺寸。

  • 整数向量深圳-添加填充大小深圳(我)到两端th“S”“T”由权重的格式给出的尺寸。元素的个数深圳必须匹配的数字“S”“T”权重的尺寸。

  • 整数矩阵深圳-添加填充大小深圳(我)而且深圳(2,我)从开始到结束th“S”“T”由权重的格式给出的尺寸。例如,对于二维输入,[t l;b r)应用大小填充tbl,r分别到输入的顶部、底部、左侧和右侧。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|字符|字符串

值来填充数据,指定为以下之一:

PaddingValue 描述 例子
标量 使用指定的标量值填充。

3. 1 4 1 5 9 2 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3. 1 4 0 0 0 0 1 5 9 0 0 0 0 2 6 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

“symmetric-include-edge” 垫使用输入的镜像值,包括边缘值。

3. 1 4 1 5 9 2 6 5 5 1 1 5 9 9 5 1 3. 3. 1 4 4 1 1 3. 3. 1 4 4 1 5 1 1 5 9 9 5 6 2 2 6 5 5 6 6 2 2 6 5 5 6 5 1 1 5 9 9 5

“symmetric-exclude-edge” 使用输入的镜像值填充,不包括边缘值。

3. 1 4 1 5 9 2 6 5 5 6 2 6 5 6 2 9 5 1 5 9 5 1 4 1 3. 1 4 1 3. 9 5 1 5 9 5 1 5 6 2 6 5 6 2 9 5 1 5 9 5 1 4 1 3. 1 4 1 3.

“复制” 填充使用重复边框元素的输入

3. 1 4 1 5 9 2 6 5 3. 3. 3. 1 4 4 4 3. 3. 3. 1 4 4 4 3. 3. 3. 1 4 4 4 1 1 1 5 9 9 9 2 2 2 6 5 5 5 2 2 2 6 5 5 5 2 2 2 6 5 5 5

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|字符|字符串

输出参数

全部折叠

卷积的特征映射,返回为dlarray使用相同的底层数据类型X

如果输入数据X是格式化的dlarray,然后Y格式与X.如果输入数据没有格式化dlarray,然后Y是未格式化的dlarray具有与输入数据相同的维度顺序。

的大小“C”(通道)的尺寸Y这取决于任务。

任务 的大小“C”
卷积 过滤器数量
分组卷积 每组过滤器的数量乘以组的数量

更多关于

全部折叠

深度学习卷积

dlconv函数对输入数据应用滑动卷积滤波器。的dlconv函数支持在一维、二金宝app维或三维空间维度或一维时间维度上进行卷积。要了解更多关于深度学习卷积的信息,请参见卷积的层convolution2dLayer参考页面。

扩展功能

版本历史

R2019b引入