主要内容

groupedConvolution2dLayer

二维分组卷积层

描述

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

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

创建

描述

例子

= groupedConvolution2dLayer (filterSizenumFiltersPerGroupnumGroups创建一个二维分组卷积层,并设置FilterSizeNumFiltersPerGroup,NumGroups属性。

例子

= groupedConvolution2dLayer (filterSizenumFiltersPerGroup, ' channel-wise ')创建一个通道卷积层(也称为深度卷积)。在这种情况下,软件决定NumGroups训练时的财物。这个语法等价于settingNumGroups到输入通道的数量。

例子

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

输入参数

全部展开

名称-值对的观点

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

例子:groupedConvolution2dLayer(5128 2“填充”,“相同”)创建一个2- d分组卷积层,包含2组128个大小的过滤器5 [5]并填充输入,使输出具有相同的大小。

输入边填充,指定为逗号分隔对,由“填充”其中一个价值观是:

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

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

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

  • 向量[t b l r]非负整数-添加大小填充t前,b底部,l左边,还有r在输入的右边。

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

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

属性

全部展开

分组卷积

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

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

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

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

例子:10

组的数目,指定为正整数或“channel-wise”

如果NumGroups“channel-wise”,然后软件创建一个通道卷积层(也称为深度卷积)。在这种情况下,层决定NumGroups训练时的财物。这个值等价于settingNumGroups到输入通道的数量。

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

例子:2

垂直和水平遍历输入的步长,指定为向量[b]两个正整数,其中一个垂直步长和b为水平步长。在创建图层时,可以指定作为标量,对两步长使用相同的值。

例子:3 [2]指定垂直步长为2,水平步长为3。

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

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

该层通过在每个过滤器元素之间插入零来扩展过滤器。膨胀因子决定了对输入采样的步长或等效滤波器的上采样因子。它对应的有效过滤器尺寸为(过滤器的大小- 1) *膨胀系数+ 1。例如,一个带有膨胀系数的3 × 3滤波器(2 - 2)相当于一个元素之间为零的5 × 5滤波器。

例子:3 [2]

应用于输入边框的填充大小,指定为矢量[t b l r]四个非负整数,其中t是应用于顶部的填充,b是底部的填充物,l填充是否应用于左侧,和r是应用到右边的填充。

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

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

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

软件会自动设置值PaddingMode基于“填充”在创建图层时指定的值。

  • 如果你设置“填充”选项为标量或非负整数向量,则软件自动设置PaddingMode“手动”

  • 如果你设置“填充”选项“相同”,则软件自动设定PaddingMode“相同”并计算训练时填充的大小,使stride等于1时输出的大小与输入的大小相同。如果步幅大于1,则输出大小为装天花板(inputSize /步),在那里inputSize是输入的高度还是宽度为相应维度的步幅。如果可能的话,软件会在顶部和底部,以及左边和右边添加相同数量的填充。如果必须垂直添加的填充有奇数值,则软件会在底部添加额外的填充。如果必须水平添加的填充有奇数值,则软件会向右侧添加额外的填充。

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

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” 使用镜像输入值(不包括边值)的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”-使用gloria初始化器初始化权重[1](也称为Xavier初始化器)。格洛特初始化器从均值和方差均为零的均匀分布中独立抽样2 / (numIn + numOut),在那里numIn = FilterSize (1) * FilterSize (2) * NumChannelsPerGroupnumOut = FilterSize (1) * FilterSize (2) * NumFiltersPerGroup

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

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

  • “零”—初始化权值为0。

  • “的”—使用“1”初始化权重。

  • 函数句柄——用自定义函数初始化权重。如果指定函数句柄,则该函数必须是这种形式的重量= func(深圳),在那里深圳是重量的大小。例如,请参见指定自定义权重初始化函数

属性时,层才初始化权重权重属性是空的。

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

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

  • “零”-用零初始化偏差。

  • “的”-用1初始化偏差。

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

  • 函数句柄——用自定义函数初始化偏差。如果指定函数句柄,则该函数必须是这种形式的偏见= func(深圳),在那里深圳是偏差的大小。

该层仅在偏见属性是空的。

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

层的层权重,指定为数字数组。

层权值是可学习的参数。属性可以直接指定权重的初始值权重属性的层。当训练一个网络时,如果权重属性为非空,则trainNetwork使用权重属性作为初始值。如果权重属性为空trainNetwork属性指定的初始化式WeightsInitializer属性的层。

在培训时,权重是一个FilterSize (1)——- - - - - -FilterSize (2)——- - - - - -NumChannelsPerGroup——- - - - - -NumFiltersPerGroup——- - - - - -NumGroups数组,NumInputChannels为层输入的通道数。

数据类型:|

层偏差的层,指定为数字数组。

层偏差是可学习的参数。当训练一个网络时,如果偏见非空的,那么trainNetwork使用偏见属性作为初始值。如果偏见是空的,然后trainNetwork使用指定的初始化式BiasInitializer

在培训时,偏见是一个1-by-1-by——NumFiltersPerGroup——- - - - - -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可学的参数权重:[]偏见:[]显示所有属性

创建一个channel-wise convolutional(也称为depth-wise convolutional)层,该层由10个滤镜组成,每个滤镜的高度和宽度分别为11和11“cwconv1”

10层= groupedConvolution2dLayer(11日,“channel-wise”“名字”“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;converlayers =[卷积2dlayer (filterSize,numFilters,“步”2,“填充”“相同”) batchNormalizationLayer reluLayer];

对于信道可分卷积(也称为深度可分卷积),将卷积块替换为信道可分卷积块和点可分卷积块。

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

cwsConvLayers = [groupedConvolution2dLayer(filterSize,1,)]“channel-wise”“步”2,“填充”“相同”) batchNormalizationLayer reluLayer卷积2dlayer (1,numFilters,“填充”“相同”) batchNormalizationLayer reluLayer];

创建一个网络,包含信道可分离卷积的层。

layers = [imageInputLayer([227 227 3])]卷积2dlayer (3,32,“填充”“相同”) batchNormalizationLayer reluLayer groupedConvolution2dLayer(3,1, 1,)“channel-wise”“步”2,“填充”“相同”) batchNormalizationLayer reluLayer convolution2dLayer(1,16,“填充”“相同”maxPooling2dLayer(2,“步”,2) fulllyconnectedlayer (5) softmaxLayer classificationLayer];

参考文献

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

何开明,张翔宇,任少青,孙健深入研究整流器:在图像网分类上超越人类水平的表现。在2015 IEEE计算机视觉国际会议论文集, 1026 - 1034。计算机视觉,2015。

扩展功能

介绍了R2019a