主要内容

卷积层

2-D卷积层

描述

二维卷积层将滑动卷积滤波器应用于二维输入。该层通过沿输入垂直和水平移动滤波器,计算权重和输入的点积,然后添加偏差项,从而卷积输入。

创建

描述

= Convolution2Dlayer(filterSizenumFilters)创建一个2-D卷积层并设置FilterSizeNumFilters财产。

例子

= Convolution2Dlayer(filterSizenumFilters名称,值)设置可选的步行膨胀因子NumChannels参数和初始化学习率和正规化姓名属性。若要指定输入填充,请使用“填充”名称值对参数。例如,Convolution2dlayer(11,96,'stride',4,'填充',1)创建一个带有96个滤镜的2d卷积层(11 11)一大步[4 4],以及沿图层输入的所有边缘大小为1的填充。可以指定多个名称-值对。将每个属性名用单引号括起来。

输入参数

全部展开

名称-值对的观点

使用逗号分隔的名称 - 值对参数指定填充的大小以沿着图层的边缘添加或设置步行膨胀因子NumChannels参数和初始化学习率和正规化姓名财产。用单引号附上名称。

例子:convolution2dLayer(16日“填充”,“相同”)创建一个带有16个大小过滤器的2d卷积层[3 3]“一样”填充。在训练时,软件计算并设置填充的大小,使层输出的大小与输入的大小相同。

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

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

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

  • 向量[甲、乙]非负整数-添加大小填充一个输入的顶部和底部的填充大小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为水平步长。在创建图层时,可以指定步行作为标量,对两步长使用相同的值。

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

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

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

该层通过在每个过滤器元素之间插入零来扩展过滤器。膨胀因子确定对输入进行采样的步长,或等效地确定滤波器的上采样因子。它对应于的有效过滤器大小为(过滤器的大小- 1) *膨胀系数+ 1。例如,具有扩张因子的3×3过滤器[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输入和输出的高度或宽度是相应维度的步幅。如果可能,该软件将相同数量的填充物到顶部和底部以及左侧和右侧。如果必须垂直添加的填充具有奇数值,则软件将额外的填充添加到底部。如果必须水平添加的填充具有奇数值,则软件将右侧添加额外的填充。

请注意

填充属性将在未来的版本中被删除。使用拼接相反,在创建图层时,请使用“填充”名称值对参数指定填充大小。

垂直和水平应用于输入边框的填充大小,指定为向量[甲、乙]两个非负整数,其中一个填充是否应用于输入数据的顶部和底部,以及b是应用于左边和右边的填充。

例子:[1 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

'对称排除-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|字符|细绳

每个过滤器的通道数,指定为“汽车”或者一个正整数。

此参数始终等于输入到卷积层的通道数。例如,如果输入是彩色图像,则输入的通道数为3。如果当前层之前卷积层的过滤器数为16,则当前层的通道数为16。

如果NumChannels“汽车”,然后软件确定训练时的通道数。

例子:256.

参数和初始化

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

  • “glorot”-使用gloria初始化器初始化权重[4](也称为Xavier初始化器)。格洛特初始化器从均值和方差均为零的均匀分布中独立抽样2 / (numIn + numOut),在那里numIn = FilterSize (1) * FilterSize (2) * NumChannelsnumOut = FilterSize (1) * FilterSize (2) * NumFilters

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

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

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

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

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

该层仅在以下情况下初始化权重:权重属性是空的。

数据类型:字符|细绳|function_handle

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

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

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

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

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

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

数据类型:字符|细绳|function_handle

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

图层权重是可学习的参数。您可以直接使用权重属性的层。当你训练一个网络,如果权重那个层的财产是非空的,然后trainNetwork使用权重属性作为初始值。如果权重属性为空trainNetwork使用由指定的初始值设定项WeightsInitializer属性的层。

在培训时,权重是A.过滤(1)——- - - - - -FilterSize (2)——- - - - - -NumChannels——- - - - - -NumFilters数组中。

数据类型:单身的|

卷积层的层偏置,指定为数字数组。

层偏差是可学习的参数。当你训练一个网络,如果偏见是不是空的,然后trainNetwork使用偏见属性作为初始值。如果偏见是空的,然后trainNetwork使用由指定的初始值设定项双星化剂

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

数据类型:单身的|

学习率和正规化

权值的学习率因子,指定为非负标量。

该软件将这个因子乘以全局学习率,以确定这一层权重的学习率。例如,如果举重2,则该层权重的学习率为当前全局学习率的两倍。该软件根据您指定的设置来确定全局学习率培训选项函数。

数据类型:单身的||int8|int16|int32|int64|uint8.|uint16|UINT32|UINT64

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

该软件通过全局学习率乘以此因素来确定该层中偏差的学习率。例如,如果BiasLearnRateFactor2,则该层偏差的学习率是当前全局学习率的两倍。该软件根据您指定的设置来确定全局学习率培训选项函数。

数据类型:单身的||int8|int16|int32|int64|uint8.|uint16|UINT32|UINT64

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

软件将该系数乘以全局系数l2正则化因子的确定l2正则化这一层的权重。例如,如果WeightL2Factor2,那么l2这一层权重的正则化是全局权重的两倍l2正则化因素。您可以指定全局l2使用正则化因子培训选项函数。

数据类型:单身的||int8|int16|int32|int64|uint8.|uint16|UINT32|UINT64

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

软件将该系数乘以全局系数l2正则化因子的确定l2正则化这一层的偏差。例如,如果BiasL2Factor2,那么l2这一层偏见的正规化程度是全球的两倍l2正则化因素。您可以指定全局l2使用正则化因子培训选项函数。

数据类型:单身的||int8|int16|int32|int64|uint8.|uint16|UINT32|UINT64

层名,指定为字符向量或字符串标量。为阵列输入,trainNetworkassembleNetwork分层图dlnetwork函数自动为层分配名称姓名设置为''

数据类型:字符|细绳

此属性是只读的。

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

数据类型:

此属性是只读的。

输入层名。这一层只接受单个输入。

数据类型:细胞

此属性是只读的。

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

数据类型:

此属性是只读的。

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

数据类型:细胞

例子

全部折叠

使用96个过滤器创建卷积层,每个滤波器具有高度和宽度11.在水平和垂直方向上使用4的步幅(步长)。

96年层= convolution2dLayer(11日“步”4)
layer = Convolution2DLayer with properties: Name: " Hyperparameters FilterSize: [11 11] NumChannels: 'auto' NumFilters: 96 Stride: [4 4] DilationFactor: [11] PaddingMode: 'manual' PaddingSize: [0 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性

中包含一个卷积层数组中。

[imageInputLayer([28 28 1])卷积2dlayer (5,20) reluLayer maxPooling2dLayer(2, 20))“步”,2) fulllyconnectedlayer (10) softmaxLayer classifier]
layers=7x1层阵列,带层:1''图像输入28x28x1图像,带“零中心”规格化2''卷积20 5x5卷积,带跨步[1]和填充[0 0 0 0 0 0 0]3''ReLU ReLU 4''最大池2x2最大池,带跨步[2]和填充[0 0 0 0 0 0]5''全连接10''全连接层6''Softmax Softmax 7''分类输出crossentropyex

要指定权重和偏置初始化器功能,请使用WeightsInitializer双星化剂属性分别。要直接指定权重和偏差,请使用权重偏见属性分别。

指定初始化函数

创建一个带有32个过滤器的卷积层,每个过滤器的高度和宽度都为5,并指定权重初始化器为He初始化器。

filterSize=5;numFilters=32;layer=convolution2dLayer(filterSize,numFilters,......“WeightsInitializer”“他”)
layer = Convolution2DLayer with properties: Name: " Hyperparameters FilterSize: [5 5] NumChannels: 'auto' NumFilters: 32 Stride: [1 1] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [0 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性

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

指定自定义初始化函数

要为权重和偏置指定自己的初始化功能,请设置WeightsInitializer双星化剂属性设置为函数句柄。对于这些属性,指定将权重和偏差的大小作为输入和输出初始化值的函数句柄。

创建一个包含32个过滤器的卷积层,每个过滤器的高度和宽度均为5,并指定初始值设定项,用于从标准偏差为0.0001的高斯分布中采样权重和偏差。

filterSize=5;numFilters=32;layer=convolution2dLayer(filterSize,numFilters,......“WeightsInitializer”, @(sz) rand(sz) * 0.0001,......“BiasInitializer”, @(sz) rand(sz) * 0.0001)
layer = Convolution2DLayer with properties: Name: " Hyperparameters FilterSize: [5 5] NumChannels: 'auto' NumFilters: 32 Stride: [1 1] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [0 0 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性

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

直接指定权重和偏差

创建一个完整连接的层,输出大小为10,并设置权重和偏差Wb在MAT文件中Conv2dWeights.mat分别地

filterSize = 5;numFilters = 32;负载Conv2dWeights层= convolution2dLayer (filterSize numFilters,......“重量”W,......'偏见', b)
layer = Convolution2DLayer with properties: Name: " Hyperparameters FilterSize: [5 5] NumChannels: 3 NumFilters: 32 Stride: [1 1] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [0 0 0] PaddingValue: 0 Learnable Parameters Weights: [5x5x3x32 double] Bias: [1x1x32 double]显示所有属性

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

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

确保卷积完全覆盖输入。为了使卷积完全覆盖输入,水平和垂直输出维度都必须是整数。如果水平输出尺寸为整数,则图像的顶部和底部需要一行填充:(28 - 6+ 2 * 1)/4 + 1 = 7。如果垂直输出尺寸为整数,则不需要填充零:(28 - 4+ 2 * 0)/4 + 1 = 7。

构建卷积层。

layer = convolution2dLayer([6 4],16,“步”4“填充”1, [0])
layer = Convolution2DLayer with properties: Name: " Hyperparameters FilterSize: [6 4] NumChannels: 'auto' NumFilters: 16 Stride: [4 4] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [1 1 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性

更多关于

全部展开

兼容性考虑

全部展开

行为在R2019a中改变

参考文献

莱昆,Y. B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard,和L. D. jackkel。“基于反向传播网络的手写数字识别”在神经信息处理系统的进步2(杜雷兹基编)。旧金山:摩根·考夫曼,1990年。

勒昆(LeCun)、L.博图(L. Bottou)、Y.本吉奥(Y. Bengio)和P. Haffner。“梯度学习在文档识别中的应用”。IEEE论文集.1998年第86卷第11期,第2278-2324页。

[3] Murphy,K。P.机器学习:概率的观点.马萨诸塞州剑桥:麻省理工学院出版社,2012。

[4] 格洛特、泽维尔和约书亚·本吉奥,《理解训练深度前馈神经网络的困难》,年第十三届人工智能和统计国际会议记录, 249 - 356。撒丁岛,意大利:AISTATS, 2010。

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

扩展能力

介绍了R2016a

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