主要内容

groupedConvolution2dLayer

二维卷积层分组

自从R2019a

描述

一层二维分组卷积分离输入通道进入组织和应用滑动卷积过滤器。使用分组卷积层channel-wise分离(也称为深度方面可分)卷积。

每组的层可变输入通过移动过滤器在垂直、水平的输入,计算权重的点积和输入,然后添加一个偏见。每一组独立的层结合曲线玲珑。如果组织的数量等于通道的数量,然后这一层执行channel-wise卷积。

创建

描述

例子

= groupedConvolution2dLayer (filterSize,numFiltersPerGroup,numGroups)创建一个二维卷积层和设置分组FilterSize,NumFiltersPerGroup,NumGroups属性。

例子

= groupedConvolution2dLayer (filterSize,numFiltersPerGroup,' channel-wise ')创建一个层channel-wise卷积(也称为卷积深度方面)。在这种情况下,软件决定NumGroups房地产在训练时间。这个语法相当于设置NumGroups输入通道的数量。

例子

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

输入参数

全部展开

名称-值参数

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

例子:groupedConvolution2dLayer(5128 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”,那么软件创建一个层channel-wise卷积(也称为卷积深度方面)。在这种情况下,层决定了NumGroups房地产在训练时间。这个值等于设置NumGroups输入通道的数量。

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

例子:2

步长为遍历输入垂直和水平,指定为一个向量[b]两个正整数的一个垂直步长和吗b是水平的步长。创建层时,您可以指定作为标量为两步使用相同的价值大小。

例子:3 [2]指定一个垂直的步长2和3的水平步长。

因素扩张卷积(也称为深黑色的卷积),指定为一个向量[w h]两个正整数的h垂直扩张和吗w是横向的扩张。创建层时,您可以指定DilationFactor作为一个标量使用相同的值为水平和垂直相呼应。

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

层扩展每个滤芯过滤器插入0之间。膨胀系数确定的步长采样滤波器的输入或等同于upsampling因素。它对应于一个有效的过滤的大小(过滤器的大小- 1)*膨胀系数+ 1。例如,一个3×3过滤器与扩张的因素(2 - 2)相当于5-by-5过滤与0之间的元素。

例子:3 [2]

大小的衬垫适用于输入边界,指定为一个向量[t b l r]四个非负整数,t填充应用于顶部,b填充应用于底部,l是填充应用到左边,r向右填充应用。

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

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

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

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

  • 如果你设置“填充”选择一个标量或矢量的非负整数,那么软件自动设置PaddingMode“手动”

  • 如果你设置“填充”选项“相同”,那么软件自动设置PaddingMode“相同”和计算填充在训练时间的大小,输出具有相同的大小作为输入时,步幅等于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” 垫使用镜像的输入值,排除边缘值。

( 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|字符|字符串

每个集团的渠道数量,指定为“汽车”或者一个正整数。每个集团的渠道数量等于输入通道的数量除以组的数量。

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

例子:256年

参数和初始化

初始化权重函数,指定为以下之一:

  • “glorot”——初始化权重Glorot初始值设定项[1](也称为Xavier初始化)。Glorot初始化样本独立均匀分布与零均值和方差2 / (numIn + numOut),在那里numIn = FilterSize (1) * FilterSize (2) * NumChannelsPerGroupnumOut = FilterSize (1) * FilterSize (2) * NumFiltersPerGroup

  • “他”——初始化权重的初始值设定项[2]。他初始化样本正态分布与零均值和方差2 / numIn,在那里numIn = FilterSize (1) * FilterSize (2) * NumChannelsPerGroup

  • “narrow-normal”——初始化权重独立抽样从正态分布与零均值和标准偏差0.01。

  • “零”——初始化权重为零。

  • “的”——初始化权重的。

  • 函数处理——使用一个自定义函数初始化权重。如果你指定一个函数处理,那么必须表单的功能重量= func(深圳),在那里深圳权重的大小。例如,看到的指定自定义权重的初始化函数

层只初始化时的重量权重属性是空的。

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

函数来初始化偏见,指定为以下之一:

  • “零”——初始化与零偏差。

  • “的”——初始化偏见的。

  • “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数组中。

数据类型:|

学习速率、正规化

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

软件由全球学习速率繁殖这个因素确定权重的学习速率这一层。例如,如果WeightLearnRateFactor2,然后在这一层权值的学习速率是当前全球学习速率的两倍。全球学习速率决定了基于的软件设置您指定使用trainingOptions函数。

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

学习速率因子的偏见,指定为负的标量。

软件由全球学习速率繁殖这个因素来确定学习速率的偏见在这一层。例如,如果BiasLearnRateFactor2,那么学习速率的偏见层是当前全球学习速率的两倍。全球学习速率决定了基于的软件设置您指定使用trainingOptions函数。

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

l2正则化因子权重,指定为负的标量。

全球的软件增加这个因素l2正则化因子来确定l2正则化这一层的权重。例如,如果WeightL2Factor2,那么l2正则化这一层的权重是全球的两倍l2正则化因子。您可以指定全球l2正则化因子使用trainingOptions函数。

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

l2正则化因子的偏见,指定为负的标量。

全球的软件增加这个因素l2正则化因子来确定l2在这一层正规化的偏见。例如,如果BiasL2Factor2,那么l2正规化的偏见这一层是全球的两倍l2正则化因子。决定了全球的软件l2正则化因子的基础上,设置您指定使用trainingOptions函数。

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

图层名称,指定为一个特征向量或字符串标量。为数组输入,trainNetwork,assembleNetwork,layerGraph,dlnetwork函数自动分配名称层的名称

数据类型:字符|字符串

这个属性是只读的。

输入层的数量。这一层只接受一个输入。

数据类型:

这个属性是只读的。

输入层的名称。这一层只接受一个输入。

数据类型:细胞

这个属性是只读的。

输出层的数量。这一层只有一个输出。

数据类型:

这个属性是只读的。

输出层的名称。这一层只有一个输出。

数据类型:细胞

例子

全部折叠

创建一个分组卷积与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卷积(也称为深度方面卷积)层组10过滤器,每个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;convLayers = [convolution2dLayer filterSize numFilters,“步”2,“填充”,“相同”)batchNormalizationLayer reluLayer];

channel-wise分离卷积(也称为深度方面分离卷积),代替卷积块channel-wise卷积和逐点卷积块。

指定过滤器的大小和步幅channel-wise卷积和卷积过滤器的逐点的数量。channel-wise卷积,每组指定一个过滤器。对于逐点卷积,指定过滤器的尺寸1convolution2dLayer

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

创建一个网络层包含channel-wise分离卷积。

层= [imageInputLayer ([227 227 3]) convolution2dLayer(3, 32岁“填充”,“相同”)batchNormalizationLayer reluLayer groupedConvolution2dLayer (3、1“channel-wise”,“步”2,“填充”,“相同”)batchNormalizationLayer reluLayer convolution2dLayer(1, 16岁,“填充”,“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer (2“步”,2)fullyConnectedLayer (5) softmaxLayer classificationLayer];

算法

全部展开

引用

[1]Glorot,泽维尔,Yoshua Bengio。“理解的难度训练前馈神经网络。”在《十三人工智能国际会议上和统计,249 - 356。意大利撒丁岛:AISTATS, 2010。https://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf

[2]他开明、象屿张任Shaoqing,剑太阳。“深深入整流器:超越人类表现ImageNet分类。”在学报2015年IEEE计算机视觉国际会议,1026 - 1034。华盛顿特区:IEEE计算机视觉的社会,2015年。https://doi.org/10.1109/ICCV.2015.123

扩展功能

版本历史

介绍了R2019a