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
选择。
例子
执行二维卷积
创建格式化的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个通道。
执行1-D卷积
创建格式化的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”
输入参数
X
- - - - - -输入数据
dlarray
|数字数组
输入数据,指定为格式化的dlarray
,一个未格式化的dlarray
,或数值数组。
如果X
是未格式化的dlarray
或数值数组,则必须使用DataFormat
选择。如果X
是数字数组吗权重
或偏见
一定是dlarray
对象。
这个函数,默认情况下,在最多三个维度上卷积X
标签“S”
(空间)。对标记的维度进行卷积“T”
(时间),指定权重
与一个“T”
使用格式化的dlarray
对象或使用WeightsFormat
选择。
权重
- - - - - -卷积过滤器
dlarray
|数字数组
卷积滤波器,指定为格式化的dlarray
,一个未格式化的dlarray
,或数值数组。
权重的大小和格式取决于任务的类型。如果权重
是未格式化的dlarray
或者一个数字数组,那么大小和形状权重
取决于WeightsFormat
选择。
下表描述了各种任务权重的大小和格式。可以使用格式化方法指定具有任意顺序的维度的数组dlarray
对象或使用WeightsFormat
选择。当权重具有具有相同标签的多个维度时(例如,多个维度被标记为“S”
),则这些尺寸必须按表中所示的顺序排列。
任务 | 所需的尺寸 | 大小 | 例子 | |
---|---|---|---|---|
权重 | 格式 | |||
一维卷积 | “S” (空间)或“T” (时间) |
过滤器的大小 |
|
“并” (空间,通道,未指明) |
“C” (通道) |
通道数 | |||
“U” (不明) |
过滤器数量 | |||
一维群卷积 | “S” (空间)或“T” (时间) |
过滤器的大小 |
|
“SCUU” (空间,通道,未指明,未指明) |
“C” (通道) |
每组通道数 | |||
第一个“U” (不明) |
每组过滤器的数量 | |||
第二个“U” (不明) |
组数 | |||
二维卷积 | 第一个“S” (空间) |
过滤器的高度 |
|
“SSCU” (空间,空间,通道,未指明) |
第二个“S” (空间)或“T” (时间) |
滤波器的宽度 | |||
“C” (通道) |
通道数 | |||
“U” (不明) |
过滤器数量 | |||
二维分组卷积 | 第一个“S” (空间) |
过滤器的高度 |
|
“SSCUU” (空间,空间,通道,未指明,未指明) |
第二个“S” (空间)或“T” (时间) |
滤波器的宽度 | |||
“C” (通道) |
每组通道数 | |||
第一个“U” (不明) |
每组过滤器的数量 | |||
第二个“U” (不明) |
组数 | |||
三维卷积 | 第一个“S” (空间) |
过滤器的高度 |
|
“SSSCU” (空间,空间,空间,通道,未指明) |
第二个“S” (空间) |
滤波器的宽度 | |||
第三“S” (空间)或“T” (时间) |
过滤器深度 | |||
“C” (通道) |
通道数 | |||
“U” (不明) |
过滤器数量 |
对于信道可分离卷积(也称为深度可分离卷积),使用组的数量等于信道的数量的分组卷积。
提示
这个函数,默认情况下,在最多三个维度上卷积X
标签“S”
(空间)。对标记的维度进行卷积“T”
(时间),指定权重
与一个“T”
使用格式化的dlarray
对象或使用WeightsFormat
选择。
偏见
- - - - - -偏见常数
dlarray
|数值向量|数字标量
偏差常数,指定为格式化的dlarray
,一个未格式化的dlarray
、数字向量或数字标量。
如果
偏见
为标量,则对每个输出应用相同的偏置。如果
偏见
有一个非单维度,那么偏见
偏差是否应用于?所指定的相应卷积滤波器权重
.元素的个数偏见
所指定的筛选器数目必须匹配权重
.如果
偏见
是0
,则禁用偏置项,在卷积运算过程中不添加偏置。
如果偏见
是格式化的dlarray
,则非单维必须是带标签的通道维“C”
(通道)。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:DilationFactor = 2
将每个卷积滤波器的膨胀因子设置为2
.
DataFormat
- - - - - -未格式化数据的维度顺序
特征向量|字符串标量
未格式化输入数据的维度顺序,指定为字符向量或字符串标量FMT
它为数据的每个维度提供了一个标签。
的格式时dlarray
对象,每个字符为数据的每个维度提供一个标签,并且必须是以下之一:
“S”
——空间“C”
——频道“B”
-批次(例如,样品和观察)“T”
-时间(例如序列的时间步长)“U”
——未指明的
您可以指定多个有标记的维度“S”
或“U”
.你可以使用标签“C”
,“B”
,“T”
最多一次。
您必须指定DataFormat
当输入数据未被格式化时dlarray
.
数据类型:字符
|字符串
WeightsFormat
- - - - - -权重的维数顺序
特征向量|字符串标量
权重的维度顺序,指定为字符向量或字符串标量,为权重的每个维度提供一个标签。
的默认值WeightsFormat
取决于任务:
任务 | 默认的 |
---|---|
一维卷积 | “并” (空间,通道,未指明) |
一维群卷积 | “SCUU” (空间,通道,未指明,未指明) |
二维卷积 | “SSCU” (空间,空间,通道,未指明) |
二维分组卷积 | “SSCUU” (空间,空间,通道,未指明,未指明) |
三维卷积 | “SSSCU” (空间,空间,空间,通道,未指明) |
支持的维金宝app度标签组合取决于卷积的类型,有关详细信息,请参阅权重
论点。
提示
这个函数,默认情况下,在最多三个维度上卷积X
标签“S”
(空间)。对标记的维度进行卷积“T”
(时间),指定权重
与一个“T”
使用格式化的dlarray
对象或使用WeightsFormat
选择。
数据类型:字符
|字符串
步
- - - - - -遍历输入数据的步长
1
(默认)|数字标量|数值向量
用于遍历输入数据的步长,指定为数值标量或数值向量。
若要对所有卷积维使用相同的步长,请将步幅指定为标量。若要为每个卷积维度指定不同的值,请将步幅指定为一个向量,其中元素的顺序与数据格式中的维度标签相对应。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
DilationFactor
- - - - - -过滤器膨胀系数
1
(默认)|数字标量|数值向量
过滤器膨胀系数,指定为数值标量或数值向量。
若要在所有卷积维数中使用膨胀因子,请将膨胀因子指定为标量。若要为每个卷积维度指定不同的值,请将膨胀因子指定为一个向量,其中元素的顺序与数据格式中的维度标签相对应。
使用膨胀因子来增加过滤器在输入数据上的接受域(过滤器可以看到的输入区域)。使用膨胀因子对应于的有效滤镜尺寸filterSize + (filterSize-1)*(dilationFactor-1)
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
填充
- - - - - -填充尺寸
0
(默认)|“相同”
|“因果”
|数字标量|数值向量|数字矩阵
的填充大小“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)
应用大小填充t
,b
,l
,r
分别到输入的顶部、底部、左侧和右侧。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|字符
|字符串
PaddingValue
- - - - - -填充数据的值
0(默认)|标量|“symmetric-include-edge”
|“symmetric-exclude-edge”
|“复制”
值来填充数据,指定为以下之一:
PaddingValue |
描述 | 例子 |
---|---|---|
标量 | 使用指定的标量值填充。 |
|
“symmetric-include-edge” |
垫使用输入的镜像值,包括边缘值。 |
|
“symmetric-exclude-edge” |
使用输入的镜像值填充,不包括边缘值。 |
|
“复制” |
填充使用重复边框元素的输入 |
|
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|字符
|字符串
输出参数
更多关于
深度学习卷积
的dlconv
函数对输入数据应用滑动卷积滤波器。的dlconv
函数支持在一维、二金宝app维或三维空间维度或一维时间维度上进行卷积。要了解更多关于深度学习卷积的信息,请参见卷积的层在convolution2dLayer
参考页面。
扩展功能
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
当以下输入参数中至少有一个是
gpuArray
或者一个dlarray
类型的底层数据gpuArray
,该函数运行在GPU上。X
权重
偏见
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
R2019b引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。