主要内容

convolution2dLayer

二维卷积层

描述

一个二维卷积层滑动卷积过滤器适用于二维输入。可变输入层的垂直、水平移动的过滤器输入,计算权重的点积和输入,然后添加一个偏见。

层的尺寸可变取决于层输入:

  • 对二维图像的输入(数据与在两维空间,四维空间对应像素的渠道,和观察),层可变空间维度。

  • 为二维图像序列输入(数据与五个维度对应像素在两维空间的通道,观察,和时间步长),可变层在两个空间维度。

  • 对于一维图像序列输入(数据与四维对应像素在一个空间维度,通道,观察,和时间步长),可变层在空间和时间维度。

创建

描述

= convolution2dLayer (filterSize,numFilters)创建一个二维卷积层和设置FilterSizeNumFilters属性。

例子

= convolution2dLayer (filterSize,numFilters,名称,值)设置可选,DilationFactor,NumChannels,参数和初始化,学习速率、正规化,的名字属性使用名称-值对。指定输入填充,使用“填充”名称-值对的论点。例如,convolution2dLayer(11, 96,“大步”4“填充”,1)创建一个二维卷积层96过滤器的大小(11 11)的步伐(4 - 4),大小为1的填充层边缘的所有输入。您可以指定多个名称-值对。在单引号附上每个属性的名字。

输入参数

全部展开

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:convolution2dLayer(16日“填充”,“相同”)创建一个二维卷积与16层过滤器的大小[3 3]“相同”填充。在训练时,软件计算和设置垫层的输出的大小具有相同的大小作为输入。

输入边缘填充,指定为逗号分隔组成的“填充”这些值之一:

  • “相同”——添加填充大小计算软件的培训或预测时间,输出具有相同的大小作为输入时,步幅等于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。

这个属性是只读的。

的过滤器,指定为一个正整数。这个号码对应的层神经元数量输入连接到同一个地区。这个参数决定渠道的数量(特征图)层的输出。

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

步长为遍历输入垂直和水平,指定为一个向量[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的高度或宽度输入和在相应的维度是进步。软件增加了相同数量的顶部和底部填充,和左和右,如果可能的话。如果必须添加垂直的填充一个奇怪的价值,那么软件添加额外的衬垫底部。如果必须添加的填充水平有一个奇怪的价值,然后软件添加额外的填充。

请注意

填充财产将在未来的版本中被删除。使用PaddingSize代替。当创建一个层,使用“填充”名称-值对参数来指定填充大小。

大小的衬垫适用于输入垂直和水平边界,指定为一个向量[b]两个非负整数,一个填充应用于输入数据和顶部和底部b填充用于左和右。

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

板数据值,指定为以下之一:

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

这个属性是只读的。

输入通道的数量,指定为以下之一:

  • “汽车”——自动确定培训时间输入通道的数量。

  • 正整数——配置层指定数量的输入通道。NumChannels和的频道数层输入数据必须匹配。例如,如果输入是一个RGB图像NumChannels必须是3。如果输入是输出的卷积和16层过滤器,然后NumChannels必须是16。

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

参数和初始化

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

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

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

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

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

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

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

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

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

函数初始化倾向,指定为以下之一:

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

  • “的”——初始化倾向。

  • “narrow-normal”——初始化倾向独立抽样从正态分布的均值为零,标准差为0.01。

  • 函数处理与自定义函数——初始化倾向。如果你指定一个函数处理,那么必须表单的功能偏见= func(深圳),在那里深圳偏差的大小。

层时才初始化倾向偏见属性是空的。

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

层权重卷积层,指定为数字数组。

层权重可学的参数。您可以指定权重的初始值直接使用权重层的属性。当你训练一个网络,如果权重属性层的非空的trainNetwork使用权重属性的初始值。如果权重属性是空的,那么trainNetwork使用指定的初始化程序WeightsInitializer层的属性。

在培训时,权重是一个FilterSize (1)——- - - - - -FilterSize (2)——- - - - - -NumChannels——- - - - - -NumFilters数组中。

数据类型:|

一层一层偏见的卷积,指定为一个数字数组。

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

在培训时,偏见是一个1-by-1-by——NumFilters数组中。

数据类型:|

学习速率、正规化

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

软件由全球学习速率繁殖这个因素确定权重的学习速率这一层。例如,如果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函数自动分配名字与名字层

数据类型:字符|字符串

这个属性是只读的。

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

数据类型:

这个属性是只读的。

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

数据类型:细胞

这个属性是只读的。

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

数据类型:

这个属性是只读的。

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

数据类型:细胞

例子

全部折叠

与96年创建一个卷积层过滤器,每个11的高度和宽度。使用一个跨步(步长)4在水平和垂直方向。

96年层= convolution2dLayer(11日“步”4)
层= Convolution2DLayer属性:名称:“Hyperparameters FilterSize: 11 [11] NumChannels:“汽车”NumFilters: 96步:4 [4]DilationFactor: [1] PaddingMode:“手动”PaddingSize: [0 0 0 0] PaddingValue: 0可学的参数权重:[]偏见:[]显示所有属性

包括一个回旋的层中数组中。

层= [imageInputLayer ([28 28 1]) convolution2dLayer (5、20) reluLayer maxPooling2dLayer (2“步”,2)fullyConnectedLayer (10) softmaxLayer classificationLayer]
层= 7 x1层与层:数组1”的形象输入28 x28x1图像zerocenter正常化2”卷积20 5 x5旋转步[1]和填充[0 0 0 0]3”ReLU ReLU 4”马克斯池2 x2马克斯池步(2 - 2)和填充[0 0 0 0]5“完全连接10完全连接层6”Softmax Softmax crossentropyex 7”分类输出

指定重量和偏见初始化函数,使用WeightsInitializerBiasInitializer属性分别。直接指定重量和偏见,使用权重偏见属性分别。

指定初始化函数

创建一个卷积与32层过滤器,每个5的高度和宽度和指定要他初始化权值初始化。

filterSize = 5;numFilters = 32;层= convolution2dLayer (filterSize numFilters,“WeightsInitializer”,“他”)
层= Convolution2DLayer属性:名称:“Hyperparameters FilterSize: 5 [5] NumChannels:“汽车”NumFilters: 32步:[1]DilationFactor: [1] PaddingMode:“手动”PaddingSize: [0 0 0 0] PaddingValue: 0可学的参数权重:[]偏见:[]显示所有属性

请注意,权重偏见属性是空的。在训练时,软件初始化这些属性使用指定的初始化函数。

指定自定义初始化函数

指定自己的初始化函数的重量和偏见,设置WeightsInitializerBiasInitializer属性函数处理。对于这些属性,指定函数句柄将重量和偏见的大小作为输入和输出初始化值。

创建一个卷积与32层过滤器,每个5的高度和宽度和指定初始化样本权重和偏见从高斯分布的标准偏差为0.0001。

filterSize = 5;numFilters = 32;层= convolution2dLayer (filterSize numFilters,“WeightsInitializer”@兰德(深圳)* 0.0001(深圳),“BiasInitializer”@(深圳)兰德(深圳)* 0.0001)
层= Convolution2DLayer属性:名称:“Hyperparameters FilterSize: 5 [5] NumChannels:“汽车”NumFilters: 32步:[1]DilationFactor: [1] PaddingMode:“手动”PaddingSize: [0 0 0 0] PaddingValue: 0可学的参数权重:[]偏见:[]显示所有属性

再一次,权重偏见属性是空的。在训练时,软件初始化这些属性使用指定的初始化函数。

直接指定重量和偏见

创建一个完全连接层和一个输出大小为10和设置权重和偏见Wb在垫子上文件Conv2dWeights.mat分别。

filterSize = 5;numFilters = 32;负载Conv2dWeights层= convolution2dLayer (filterSize numFilters,“重量”W,“偏见”,b)
层= Convolution2DLayer属性:名称:“Hyperparameters FilterSize: 5 [5] NumChannels: 3 NumFilters: 32步:[1]DilationFactor: [1] PaddingMode:“手动”PaddingSize: [0 0 0 0] PaddingValue: 0可学的参数权重:[5 x5x3x32双)偏见:[1 x1x32双]显示所有属性

在这里,权重偏见属性包含指定值。在训练时,如果这些属性非空,则软件使用指定的值作为初始重量和偏见。在这种情况下,软件不使用初始化功能。

假设输入的大小是28-by-28-by-1。创建一个卷积层16过滤器,每个6高度和宽度为4。将水平和垂直步设置为4。

确定卷积完全覆盖输入。对卷积完全覆盖输入,水平和垂直输出尺寸必须是整数。水平输出尺寸的整数,一行需要填充的顶部和底部的形象:(28 - 6 + 2 * 1)/ 4 + 1 = 7。垂直输出尺寸的整数,不需要补零:(28 - 4 + 2 * 0)/ 4 + 1 = 7。

构造卷积层。

4层= convolution2dLayer([6], 16日“步”4“填充”1,[0])
层= Convolution2DLayer属性:名称:“Hyperparameters FilterSize: [6 4] NumChannels:“汽车”NumFilters: 16步:4 [4]DilationFactor: [1] PaddingMode:“手动”PaddingSize: [1 1 0 0] PaddingValue: 0可学的参数权重:[]偏见:[]显示所有属性

算法

全部展开

引用

[1]LeCun (Y。,B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel. "Handwritten Digit Recognition with a Back-Propagation Network." In先进的神经信息处理系统2 (d . Touretzky ed)。旧金山:摩根考夫曼,1990。

[2]LeCun (Y。,l。Bottou, Y. Bengio, and P. Haffner. ''Gradient-Based Learning Applied to Document Recognition.''IEEE学报》。11号卷。86年,1998年,页2278 - 2324。

[3]墨菲,k . P。机器学习:概率的角度来看。剑桥,麻州:麻省理工学院出版社,2012年。

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

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

扩展功能

版本历史

介绍了R2016a

全部展开

行为改变R2019a


1图片来源:卷积运算(许可证)