groupedConvolution2dLayer
二维分组卷积层
描述
二维分组卷积层将输入通道分成组,并应用滑动卷积滤波器。使用分组卷积层进行通道可分离(也称为深度可分离)卷积。
对于每一组,该层通过沿着输入垂直和水平移动滤波器和计算权重和输入的点积来卷积输入,然后添加偏置项。该层独立地组合每个组的卷积。如果组的数量等于通道的数量,则该层执行通道级卷积。
创建
语法
描述
创建一个2-D分组卷积层,并设置层
= groupedConvolution2dLayer (filterSize
,numFiltersPerGroup
,numGroups
)FilterSize
,NumFiltersPerGroup
,NumGroups
属性。
输入参数
使用逗号分隔的名称-值对参数指定要在层输入的边缘添加的填充的大小,或设置步
,DilationFactor
,参数和初始化,学习率和正则化,的名字
属性。名字用单引号括起来。
例子:groupedConvolution2dLayer(5128 2“填充”,“相同”)
创建一个2- d分组卷积层,有2组128个大小的过滤器5 [5]
并将输入填充到,使输出具有相同的大小。
填充
- - - - - -输入边填充
[0 0 0 0]
(默认)|非负整数的向量|“相同”
输入边填充,指定为由逗号分隔的对组成“填充”
其中一个价值观是:
“相同”
-增加软件在训练或预测时计算出的大小的padding,使stride = 1时输出与输入大小相同。如果stride大于1,则输出大小为装天花板(inputSize /步)
,在那里inputSize
输入的高度或宽度是和步
是对应维度上的步幅。如果可能的话,软件会在顶部和底部,以及左侧和右侧添加相同数量的填充。如果必须垂直添加的填充值为奇数,则软件将在底部添加额外的填充。如果必须水平添加的填充值为奇数,则软件将在右侧添加额外的填充。非负整数
p
-添加填充大小p
到输入的所有边。向量
[b]
的非负整数-添加填充大小一个
到输入和填充大小的顶部和底部b
向左和向右。向量
[t b l r]
的非负整数-添加填充大小t
到了顶端,b
到底,l
向左,然后r
在输入的右边。
例子:“填充”,1
将一行填充添加到顶部和底部,并将一列填充添加到输入的左侧和右侧。
例子:“填充”,“相同”
添加填充,使输出与输入大小相同(如果stride = 1)。
属性
分组卷积
FilterSize
- - - - - -过滤器的高度和宽度
两个正整数的向量
过滤器的高度和宽度,指定为一个向量[w h]
两个正整数,其中h
是高度和w
是宽度。FilterSize
定义输入中神经元连接的局部区域的大小。
在创建层时,您可以指定FilterSize
作为标量使用相同的值表示高度和宽度。
例子:5 [5]
指定高为5、宽为5的筛选器。
NumFiltersPerGroup
- - - - - -每组过滤器的数量
正整数
每组筛选器的数量,指定为正整数。此属性决定了层输出中的通道数。输出通道数为FiltersPerGroup * NumGroups
。
例子:10
NumGroups
- - - - - -组数
正整数|“channel-wise”
组数,指定为正整数或“channel-wise”
。
如果NumGroups
是“channel-wise”
,然后软件创建一个通道卷积层(也称为深度卷积)。在这种情况下,层决定NumGroups
培训时的财产。这个值相当于settingNumGroups
到输入通道的数量。
组的数量必须平均分配层输入的通道数。
例子:2
步
- - - - - -遍历输入的步长
[1]
(默认)|两个正整数的向量
垂直和水平遍历输入的步长,指定为向量[b]
两个正整数,其中一个
垂直步长和b
是水平步长。在创建层时,您可以指定步
作为标量,对两个步长使用相同的值。
例子:3 [2]
指定垂直步长为2,水平步长为3。
DilationFactor
- - - - - -扩张卷积因子
[1]
(默认)|两个正整数的向量
扩张卷积(也称为阿特劳斯卷积)的因子,用向量表示[w h]
两个正整数,其中h
是垂直扩张和w
是水平膨胀。在创建层时,您可以指定DilationFactor
作为一个标量,对水平和垂直膨胀使用相同的值。
使用扩张卷积来增加层的接受域(层可以看到的输入区域),而不增加参数数量或计算量。
该层通过在每个过滤器元素之间插入0来扩展过滤器。膨胀因子决定对输入进行采样的步长或等效地决定滤波器的上采样因子。它对应于有效过滤器大小为(过滤器的大小- 1) .*膨胀系数+ 1。例如,带有膨胀因子的3 × 3滤波器(2 - 2)
等效于元素之间为0的5x5过滤器。
例子:3 [2]
PaddingSize
- - - - - -填充尺寸
[0 0 0 0]
(默认)|四个非负整数的向量
要应用于输入边框的填充大小,以向量形式指定[t b l r]
四个非负整数,其中t
是填充到顶部,b
是填充到底部,l
填充应用于左侧,和r
是应用于右侧的填充。
创建图层时,使用“填充”
名称-值对参数指定填充大小。
例子:[1,2 2]
将一行填充添加到顶部和底部,并将两列填充添加到输入的左侧和右侧。
PaddingMode
- - - - - -方法来确定填充大小
“手动”
(默认)|“相同”
方法来确定填充大小,指定为“手动”
或“相同”
。
的值由软件自动设置PaddingMode
基于“填充”
创建层时指定的值。
如果你设置
“填充”
选项为标量或矢量的非负整数,然后软件自动设置PaddingMode
来“手动”
。如果你设置
“填充”
选项“相同”
,然后软件自动设置PaddingMode
来“相同”
并在训练时计算填充的大小,以便当stride = 1时输出与输入具有相同的大小。如果stride大于1,则输出大小为装天花板(inputSize /步)
,在那里inputSize
输入的高度或宽度是和步
是对应维度上的步幅。如果可能的话,软件会在顶部和底部,以及左侧和右侧添加相同数量的填充。如果必须垂直添加的填充值为奇数,则软件将在底部添加额外的填充。如果必须水平添加的填充值为奇数,则软件将在右侧添加额外的填充。
PaddingValue
- - - - - -填充数据的值
0(默认)|标量|“symmetric-include-edge”
|“symmetric-exclude-edge”
|“复制”
值来填充数据,指定为以下之一:
PaddingValue |
描述 | 例子 |
---|---|---|
标量 | 使用指定的标量值填充。 |
|
“symmetric-include-edge” |
垫使用输入的镜像值,包括边缘值。 |
|
“symmetric-exclude-edge” |
使用输入的镜像值填充,不包括边缘值。 |
|
“复制” |
填充使用重复边框元素的输入 |
|
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|字符
|字符串
NumChannelsPerGroup
- - - - - -每组通道数
“汽车”
(默认)|正整数
每个组的通道数,指定为“汽车”
或者一个正整数。每组的通道数等于输入通道数除以组数。
软件在训练时自动设置此属性。
例子:256
参数和初始化
WeightsInitializer
- - - - - -函数初始化权重
“glorot”
(默认)|“他”
|“narrow-normal”
|“零”
|“的”
|函数处理
函数初始化权重,指定为以下之一:
“glorot”
-使用Glorot初始化器初始化权重[1](也称为Xavier初始化器)。格洛洛特初始化器独立地从均值和方差为零的均匀分布中采样2/(numIn + numOut)
,在那里numIn = FilterSize(1)*FilterSize(2)*NumChannelsPerGroup
而且numOut = FilterSize(1)*FilterSize(2)*NumFiltersPerGroup
。“他”
-使用He初始化式初始化权重[2]。He初始化器样本来自均值和方差为零的正态分布2 / numIn
,在那里numIn = FilterSize(1)*FilterSize(2)*NumChannelsPerGroup
。“narrow-normal”
-通过从均值为0,标准差为0.01的正态分布中独立抽样来初始化权重。“零”
-用0初始化权重。“的”
-用1初始化权重。函数句柄——使用自定义函数初始化权重。如果指定了函数句柄,则该函数必须为
权重= func(sz)
,在那里深圳
就是权重的大小。有关示例,请参见指定自定义权重初始化函数。
时,层才初始化权重权重
属性为空。
数据类型:字符
|字符串
|function_handle
BiasInitializer
- - - - - -函数初始化偏置
“零”
(默认)|“narrow-normal”
|“的”
|函数处理
函数初始化偏差,指定为以下之一:
“零”
-用0初始化偏差。“的”
-用1初始化偏差。“narrow-normal”
-通过从均值为零、标准差为0.01的正态分布中独立抽样来初始化偏差。函数句柄-使用自定义函数初始化偏置。如果指定了函数句柄,则该函数必须为
偏差= func(sz)
,在那里深圳
是偏差的大小。
时,层才初始化偏差偏见
属性为空。
数据类型:字符
|字符串
|function_handle
权重
- - - - - -层的重量
[]
(默认)|数字数组
该层的层权重,指定为数值数组。
层权值是可学习的参数。属性可以直接指定权重的初始值权重
层的属性。当你训练一个网络时,如果权重
属性为非空,则trainNetwork
使用权重
属性作为初始值。如果权重
那么,属性是空的trainNetwork
属性指定的初始化式WeightsInitializer
层的属性。
在训练时,权重
是一个FilterSize (1)
——- - - - - -FilterSize (2)
——- - - - - -NumChannelsPerGroup
——- - - - - -NumFiltersPerGroup
——- - - - - -NumGroups
数组,NumInputChannels
是层输入的通道数。
数据类型:单
|双
偏见
- - - - - -层的偏见
[]
(默认)|数字数组
层的层偏差,指定为数值数组。
层偏差是可学习参数。当你训练一个网络时,如果偏见
非空吗trainNetwork
使用偏见
属性作为初始值。如果偏见
那么是空的trainNetwork
所指定的初始化式BiasInitializer
。
在训练时,偏见
是1x1by -NumFiltersPerGroup
——- - - - - -NumGroups
数组中。
数据类型:单
|双
学习率和正则化
WeightLearnRateFactor
- - - - - -学习率因子的权重
1
(默认)|负的标量
权重的学习率因子,指定为非负标量。
该软件将该因子乘以全局学习率,以确定该层权重的学习率。例如,如果WeightLearnRateFactor
是2
,则该层权重的学习率为当前全局学习率的两倍。方法指定的设置,该软件根据设置确定全局学习率trainingOptions
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
BiasLearnRateFactor
- - - - - -学习率因素偏差
1
(默认)|负的标量
偏差的学习率因子,指定为非负标量。
该软件将该因子乘以全局学习率,以确定该层偏差的学习率。例如,如果BiasLearnRateFactor
是2
,则该层中偏差的学习率为当前全局学习率的两倍。方法指定的设置,该软件根据设置确定全局学习率trainingOptions
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
WeightL2Factor
- - - - - -l2权重的正则化因子
1(默认)|负的标量
l2权重的正则化因子,指定为非负标量。
软件将这个因子乘以全局l2正则化因子的确定l2这一层权重的正则化。例如,如果WeightL2Factor
是2
,则l2这一层权重的正则化是全局的两倍l2正则化因子。可以指定全局变量l2正则化因子使用trainingOptions
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
BiasL2Factor
- - - - - -l2偏差的正则化因子
0
(默认)|负的标量
l2偏差的正则化因子,指定为非负标量。
软件将这个因子乘以全局l2正则化因子的确定l2这一层偏差的正则化。例如,如果BiasL2Factor
是2
,则l2这一层偏差的正则化是全局偏差的两倍l2正则化因子。软件决定全局l2属性指定的设置的正则化因子trainingOptions
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
层
的名字
- - - - - -层的名字
”
(默认)|特征向量|字符串标量
层名,指定为字符向量或字符串标量。为层
数组输入时,trainNetwork
,assembleNetwork
,layerGraph
,dlnetwork
函数自动为具有该名称的层分配名称”
。
数据类型:字符
|字符串
NumInputs
- - - - - -输入数量
1
(默认)
此属性是只读的。
该层的输入数量。该层只接受单个输入。
数据类型:双
InputNames
- - - - - -输入名字
{'在'}
(默认)
此属性是只读的。
输入层的名称。该层只接受单个输入。
数据类型:细胞
NumOutputs
- - - - - -输出数
1
(默认)
此属性是只读的。
层的输出数量。这个图层只有一个输出。
数据类型:双
OutputNames
- - - - - -输出的名字
{“出”}
(默认)
此属性是只读的。
输出层的名称。这个图层只有一个输出。
数据类型:细胞
例子
创建分组卷积层
创建一个分组卷积层,有3组10个过滤器,每组的高度和宽度为11,以及名称“gconv1”
。
layer = groupedConvolution2dLayer(11,10,3,“名字”,“gconv1”)
layer = GroupedConvolution2DLayer with properties: Name: 'gconv1'超参数FilterSize: [11 11] NumGroups: 3 NumChannelsPerGroup: 'auto' NumFiltersPerGroup: 10 Stride: [11] DilationFactor: [11] PaddingMode: 'manual' PaddingSize: [0 0 0 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性
创建通道卷积层
创建一个通道级卷积(也称为深度级卷积)层,其中包含10个过滤器组,每个过滤器的高和宽为11,以及名称“cwconv1”
。
层= groupedConvolution2dLayer(11,10,“channel-wise”,“名字”,“cwconv1”)
layer = GroupedConvolution2DLayer with properties: Name: 'cwconv1'超参数FilterSize: [11 11] NumGroups: 'channel-wise' NumChannelsPerGroup: 'auto' NumFiltersPerGroup: 10 Stride: [11] DilationFactor: [11] PaddingMode: 'manual' PaddingSize: [0 0 0 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性
创建通道可分离卷积层
典型的卷积神经网络包含卷积块、批归一化和ReLU层。例如,
filterSize = 3;numFilters = 16;convLayers =[卷积2dlayer (filterSize,numFilters,“步”2,“填充”,“相同”) batchNormalizationLayer reluLayer;
对于通道可分离卷积(也称为深度可分离卷积),将卷积块替换为通道可分离卷积和点可分离卷积块。
指定信道卷积中的滤波器大小和步长,以及点卷积中的滤波器数量。对于通道级卷积,为每个组指定一个滤波器。对于逐点卷积,指定大小为1英寸的滤波器convolution2dLayer
。
cwsConvLayers = [groupedConvolution2dLayer(filterSize,1,“channel-wise”,“步”2,“填充”,“相同”卷积层(1,numFilters,“填充”,“相同”) batchNormalizationLayer reluLayer;
创建一个包含层的网络,用于通道级可分离卷积。
图层= [imageInputLayer([227 227 3])卷积2dlayer (3,32,“填充”,“相同”(3,1, 1,)“channel-wise”,“步”2,“填充”,“相同”卷积2dlayer (1,16,“填充”,“相同”maxPooling2dLayer(2,“步”,2) fullyConnectedLayer(5) softmaxLayer classificationLayer];
参考文献
格洛洛特,泽维尔,还有约书亚·本吉奥。《理解深度前馈神经网络训练的难度》在第十三届人工智能与统计国际会议论文集, 249 - 356。撒丁岛,意大利:AISTATS, 2010。
[2]何开明,张翔宇,任少卿,孙健。“深入研究整流器:在ImageNet分类上超越人类水平的性能。”在2015年IEEE计算机视觉国际会议论文集, 1026 - 1034。华盛顿:IEEE计算机视觉学会,2015。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
的2-D分组卷积层不支持ARM计算库的代码生成金宝app
NumGroups
属性设置为大于2的整数值。对于代码生成,使用
PaddingValue
参数必须等于0
,为默认值。
GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。
使用注意事项和限制:
的2-D分组卷积层不支持ARM Mali GPU的代码生成金宝app
NumGroups
属性设置为“channel-wise”
或者大于2的值。对于代码生成,使用
PaddingValue
参数必须等于0
,为默认值。
版本历史
在R2019a中引入
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国家站点没有针对您所在位置的访问进行优化。