主要内容

groupedconvolution2dlayer.

二维分组卷积层

描述

一个二维分组卷积层将输入通道分成组,并应用滑动卷积滤波器。使用分组卷积层进行信道可分(也称为深度可分)卷积。

对于每一组,该层通过沿输入垂直和水平移动滤波器,计算权重和输入的点积,然后添加偏差项,对输入进行卷积。该层为每一组独立地组合卷积。如果组的数量等于信道的数量,则该层执行信道相关的卷积。

创建

描述

例子

= groupedConvolution2dLayer (过滤numFiltersPerGroupnumgroups.创建一个二维分组的卷积层并设置FilterSizenumfiltersperroup., 和numgroups.属性。

例子

= groupedConvolution2dLayer (过滤numFiltersPerGroup,“信道逐”)创建一个通道卷积层(也称为深度卷积)。在这种情况下,软件决定numgroups.训练时的财物。这个语法等价于settingnumgroups.输入信道的数目。

例子

= groupedConvolution2dLayer (___名称,价值设置可选DilationFactor参数和初始化学习速度和正规化, 和的名字使用名称-值对的属性。要指定输入填充,使用“填充”名称-值对的论点。例如,groupedconvolution2dlayer(5,128,2,'填充','siden')创建2-D分组卷积层,2组128个尺寸滤波器[5 5]并填充输入,使输出具有相同的大小。可以指定多个名称-值对。将每个属性名用单引号括起来。

输入参数

全部展开

名称 - 值对参数

使用逗号分隔的名称-值对参数指定要沿层输入的边缘添加的填充的大小或设置DilationFactor参数和初始化学习速度和正规化, 和的名字属性。将名字用单引号括起来。

例子:groupedconvolution2dlayer(5,128,2,'填充','siden')创建2-D分组卷积层,2组128个尺寸滤波器[5 5]并填充输入,使输出具有相同的大小。

输入边缘填充,指定为逗号分隔的一对组成的“填充”和其中一个值:

  • '相同的'- 在训练或预测时添加软件计算的大小的填充,使得输出在步幅等于1时具有与输入相同的尺寸。如果步幅大于1,则输出大小是小区(inputSize /步幅),在那里inputSize是输入的高度或宽度,并步行为相应维度的步幅。如果可能的话,软件会在顶部和底部,以及左边和右边添加相同数量的填充。如果必须垂直添加的填充有奇数值,则软件会在底部添加额外的填充。如果必须水平添加的填充有奇数值,则软件会向右侧添加额外的填充。

  • 非负整数P.- 添加大小的填充P.到所有的边缘输入的。

  • 向量[b]非负整数-添加大小填充一种输入的顶部和底部的填充大小B.向左向右。

  • 向量[T B L R]非负整数-添加大小填充T.前,B.底部,L.到左侧,R.在输入的右边。

例子:“填充”,1在输入的顶部和底部添加一行填充,并在输入的左侧和右侧添加一列填充。

例子:“填充”,“同”添加填充,使输出与输入具有相同的大小(如果步幅等于1)。

属性

全部展开

分组卷积

滤镜的高度和宽度,指定为矢量并[h W]两个正整数,其中H是高度和W.是宽度。FilterSize定义输入中神经元连接到的局部区域的大小。

创建图层时,可以指定FilterSize作为标量,使用相同的值为高度和宽度。

例子:[5 5]指定高度和宽度分别为5和5的过滤器。

每个组的过滤器数量,指定为正整数。这个属性决定了该层输出的通道数量。输出通道数为FiltersPerGroup * NumGroups

例子:10

组的数目,指定为正整数或'渠道 - 明智'

如果numgroups.'渠道 - 明智',然后,软件将创建用于信道逐卷积的层(也称为深度方向卷积)。在这种情况下,层确定numgroups.训练时的财物。这个值等价于settingnumgroups.输入信道的数目。

组的数量必须均匀地划分层输入的通道数量。

例子:2

遍历垂直和水平输入的步长,指定为向量[b]两个正整数,其中一种垂直步长和B.是水平步长。创建图层时,可以指定作为标量用于两个步长大小的值。

例子:[2 3]指定2的垂直步长和水平台尺寸为3。

因子为扩张卷积(也称为atrous卷积),指定为矢量并[h W]两个正整数,其中H是垂直扩张和W.为水平膨胀。创建图层时,可以指定DilationFactor作为标量,对水平和垂直膨胀使用相同的值。

使用扩展卷积来增加层的接受域(层可以看到的输入区域),而不增加参数或计算的数量。

所述层通过每个过滤器元件之间插入零膨胀的过滤器。扩张因子确定用于采样输入或等效滤波器的升频采样因数的步长大小。它对应于一个有效的滤波器尺寸(滤镜尺寸- 1) *扩张因子+ 1。例如,一个带有膨胀系数的3 × 3滤波器(2 - 2)相当于一个5×5滤波器与所述元件之间的零。

例子:[2 3]

填充的大小适用于输入边框,指定为向量[T B L R]四个非负整数,其中T.是施加于顶部填料,B.衬垫是否适用于底部,L.衬垫是否适用于左侧,和R.衬垫是否适用于右侧。

创建图层时,使用“填充”参数的名称-值对指定填充大小。

例子:[1 1 2 2]在输入的顶部和底部添加一行填充,并在输入的左侧和右侧添加两列填充。

确定填充大小的方法,指定为“手动”或者'相同的'

软件自动设定的值paddingMode.基于“填充”创建图层时指定值。

  • 如果你设置“填充”选项到标量或非负整数的向量,然后自动设置软件paddingMode.“手动”

  • 如果你设置“填充”选项'相同的',然后软件自动设置paddingMode.'相同的'并在训练时间计算填充的尺寸,使得输出具有与步进等于1时的输入相同的尺寸。如果步幅大于1,则输出大小是小区(inputSize /步幅),在那里inputSize是输入的高度或宽度,并步行为相应维度的步幅。如果可能的话,软件会在顶部和底部,以及左边和右边添加相同数量的填充。如果必须垂直添加的填充有奇数值,则软件会在底部添加额外的填充。如果必须水平添加的填充有奇数值,则软件会向右侧添加额外的填充。

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

paddingsvalue. 描述 例子
标量 用指定的标量值填充。

[ 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” 使用镜像输入值(不包括边值)的Pad。

[ 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. ]

指定为每组的频道数量'汽车'或者一个正整数。每组的通道数等于输入通道数除以组数。

软件在培训时间自动设置此属性。

例子:256

参数和初始化

函数初始化权值,指定为以下其中之一:

  • 'glorot'- 使用Glorot Initializer初始化权重[1](也称为Xavier Initializer)。Glorot Initializer从均匀分布的独立样本,零均匀和方差2 /(numin + numout),在那里numIn = FilterSize (1) * FilterSize (2) * NumChannelsPerGroupnumOut = FilterSize(1)* FilterSize(2)* NumFiltersPerGroup

  • '他'- 使用初始化程序初始化权重[2].初始化器的样本来自均值和方差为零的正态分布2 / numin.,在那里numIn = FilterSize (1) * FilterSize (2) * NumChannelsPerGroup

  • “缩小正常”-从均值为零、标准差为0.01的正态分布中独立抽样来初始化权重。

  • 'zeros'- 初始化用零的权重。

  • “的”- 用初始化权重。

  • 功能手柄 - 一个自定义函数初始化的权重。如果指定一个函数句柄,那么函数必须是形式权重= func(sz),在那里深圳是重量的大小。例如,请参见指定自定义权重初始化函数

所述层仅初始化权重时重量财产是空的。

数据类型:字符|字符串|function_handle.

函数初始化偏差,指定为以下任意一个:

  • 'zeros'-用零初始化偏差。

  • “的”- 初始化者的偏见。

  • “缩小正常”-从均值为零、标准差为0.01的正态分布中独立抽样来初始化偏差。

  • 功能手柄 - 初始化具有自定义功能的偏差。如果指定一个函数句柄,那么函数必须是形式偏压= FUNC(SZ),在那里深圳是偏差的大小。

所述层仅初始化偏置时偏见财产是空的。

数据类型:字符|字符串|function_handle.

层的权重为层,指定为数字阵列。

层权值是可学习的参数。属性可以直接指定权重的初始值重量该层的属性。当训练网络,如果重量属性为非空,则Trainnetwork.使用重量属性作为初始值。如果是重量财产是空的,然后Trainnetwork.使用由指定的初始值设定掌控度该层的属性。

在培训时间,重量是一个FilterSize (1)——- - - - - -FilterSize(2)——- - - - - -numchannelspergroup.——- - - - - -numfiltersperroup.——- - - - - -numgroups.数组,NumInputChannels是层输入的信道的数目。

数据类型:|

层偏压为层,指定为数字阵列。

层偏置是可学习参数。培训网络时,如果偏见非空的,那么Trainnetwork.使用偏见属性作为初始值。如果偏见为空,则Trainnetwork.使用指定的初始化式BiasInitializer

在培训时间,偏见是一个1-by-1-by——numfiltersperroup.——- - - - - -numgroups.大批。

数据类型:|

学习速度和正规化

学习速率因子的权重,指定为非标。

该软件将这个因子乘以全局学习率,以确定这一层权重的学习率。例如,如果WeightLearnRateFactor为2,则对于在该层的权重学习速率是当前全球学习速率的两倍。该软件基于与指定的设置全局学习速率trainingOptions功能。

例子:2

偏差的学习率因子,指定为非负标量。

软件将这个因子乘以全局学习率,以确定这一层偏差的学习率。例如,如果Biaslearnratefactor.为2,则对于在该层中的偏差学习速率是当前全球学习速率的两倍。该软件基于与指定的设置全局学习速率trainingOptions功能。

例子:2

权值的L2正则化因子,指定为非负标量。

软件将此因子乘以全局L2正则化因子来确定该层中重量的L2正则化。例如,如果WeightL2Factor为2,则该层权值的L2正则化是全局L2正则化因子的两倍。您可以使用使用的全局L2正则化因子指定trainingOptions功能。

例子:2

偏差的L2正则化因子,指定为非负标量。

该软件将此因子乘以全局L2正则化因子来确定该层中偏差的L2正则化。例如,如果biasl2factor.是2,那么该层中偏差的L2正则化是全局L2正则化因子的两倍。您可以使用使用的全局L2正则化因子指定trainingOptions功能。

例子:2

层名,指定为字符向量或字符串标量。若要在层图中包含层,必须指定非空的唯一层名。如果你用层和的名字被设置为'',那么软件的名称自动分配到训练时间的层。

数据类型:字符|字符串

层的输入数。该层只接受单个输入。

数据类型:

该层的输入名称。该层只接受单个输入。

数据类型:细胞

层的输出数目。该层具有仅一个输出。

数据类型:

该层的输出的名称。该层具有仅一个输出。

数据类型:细胞

例子

全部收缩

创建一个由3组10个滤镜组成的分组卷积层,每组的高度和宽度为11,以及名称“gconv1”

3层= groupedConvolution2dLayer(11日,10日,'姓名'“gconv1”
层= GroupedConvolution2DLayer属性:名称:‘gconv1 Hyperparameters FilterSize: 11 [11] NumGroups: 3 NumChannelsPerGroup:“汽车”NumFiltersPerGroup: 10步:[1]DilationFactor: [1] PaddingMode:“手动”PaddingSize: [0 0 0 0] PaddingValue: 0可学的参数权重:[]偏见:[]显示所有属性

使用10个滤波器组创建一个通道 - 明智的卷积(也称为深度明智的卷积)层,每个滤波器具有高度和宽度为11,以及名称“cwconv1”

层= groupedConvolution2dLayer(11,10,'渠道 - 明智''姓名'“cwconv1”
层= GroupedConvolution2DLayer属性:名称:‘cwconv1 Hyperparameters FilterSize: 11 [11] NumGroups:“channel-wise”NumChannelsPerGroup:“汽车”NumFiltersPerGroup: 10步:[1]DilationFactor: [1] PaddingMode:“手动”PaddingSize: [0 0 0 0] PaddingValue: 0可学的参数权重:[]偏见:[]显示所有属性

一个典型的卷积神经网络包含卷积,批次归一化,和RELU层块。例如,

filtersize = 3;numfilters = 16;convlayers = [Convolution2Dlayer(过滤,NumFilters,'走吧'2,“填充”'相同的') batchNormalizationLayer reluLayer];

对于信道逐可分离卷积(也称为深度方向可分离卷积),更换频道明智卷积和逐点卷积块卷积块。

指定通道卷积中的滤波器大小和步幅,以及点卷积中的滤波器数量。对于信道卷积,为每组指定一个滤波器。对于逐点卷积,指定大小为1 in的滤波器convolution2dLayer

cwsConvLayers = [groupedConvolution2dLayer(filterSize,1,)]'渠道 - 明智''走吧'2,“填充”'相同的') batchNormalizationLayer reluLayer卷积2dlayer (1,numFilters,“填充”'相同的') batchNormalizationLayer reluLayer];

创建包含频道可分离卷积的包含图层的网络。

layers = [imageInputLayer([227 227 3])]卷积2dlayer (3,32,“填充”'相同的') batchNormalizationLayer reluLayer groupedConvolution2dLayer(3,1, 1,)'渠道 - 明智''走吧'2,“填充”'相同的') batchNormalizationLayer reluLayer convolution2dLayer(1,16,“填充”'相同的')batchNormalizationLayer reluLayer maxPooling2dLayer(2,'走吧',2)全连接列(5)SoftmaxLayer分类层];

参考文献

[1]格洛洛,泽维尔,还有约书亚·本吉奥。理解训练深度前馈神经网络的困难在第十三届国际人工智能和统计会议论文集,249-356。撒丁岛,意大利:2010年亚斯特哈。

[2]他,Kaiming,湘雅张,少清任,剑孙。“深入研究整流器:超越了在想象集分类上的人力水平表现。”在计算机视觉在2015年IEEE国际会议论文集, 1026 - 1034。计算机视觉,2015。

扩展功能

在R2019A介绍