文档

convolution2dLayer

二维卷积层

描述

2-D卷积层对输入应用滑动滤波器。该层通过沿着输入垂直和水平移动滤波器和计算权重和输入的点积来卷积输入,然后添加一个偏置项。

创建

语法

layer = convolution2dLayer(filterSize,numFilters)
layer = convolution2dLayer(filterSize,numFilters,Name,Value)

描述

= convolution2dLayer (filterSizenumFilters创建一个2-D卷积层并设置FilterSize而且NumFilters属性。

例子

= convolution2dLayer (filterSizenumFilters名称,值设置可选的NumChannelsWeightLearnRateFactorBiasLearnRateFactorWeightL2FactorBiasL2Factor,的名字属性使用名称-值对。要指定输入填充,请使用“填充”名称-值对参数。例如,convolution2dLayer(11, 96,“大步”4“填充”,1)创建一个带有96个大小过滤器的二维卷积层(11 11),一大步(4 - 4),以及在层输入的所有边缘上为0的大小为1的填充。可以指定多个名称-值对。将每个属性名用单引号括起来。

输入参数

全部展开

名称-值对参数

使用逗号分隔的名称-值对参数指定要在层输入的边缘添加的零填充的大小,或设置NumChannelsWeightLearnRateFactorBiasLearnRateFactorWeightL2FactorBiasL2Factor,的名字属性。名字用单引号括起来。

例子:convolution2dLayer(16日“填充”,“相同”)创建一个具有16个大小过滤器的2-D卷积层[3 3]而且“相同”填充。在训练时,软件计算零填充的大小,使层输出具有与输入相同的大小。

全部展开

要添加到输入边的填充,指定为逗号分隔的对,由“填充”和以下其中之一:

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

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

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

  • 向量[t b l r]的非负整数-添加填充大小t到了顶端,b到底,l向左,然后r在输入的右边。

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

例子:“填充”,“相同”添加填充,使输出与输入大小相同(如果stride = 1)。

属性

全部展开

过滤器的高度和宽度,指定为两个正整数的向量[w h],在那里h是高度和w是宽度。FilterSize定义输入中神经元连接的局部区域的大小。

如果你设置FilterSize使用输入参数,然后可以指定FilterSize作为标量,对两个维度使用相同的值。

例子:5 [5]指定高5和宽5的筛选器。

筛选器的数目,指定为正整数。这个数字对应于卷积层中连接到输入中相同区域的神经元数量。这个参数决定了卷积层输出中通道(特征映射)的数量。

例子:96

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

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

要应用于输入边框的填充大小,指定为由四个非负整数组成的向量[t b l r],在那里t是填充到顶部,b是填充到底部,l填充应用于左侧,和r是应用于右侧的填充。

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

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

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

如果指定非负整数的标量或向量作为“填充”值时创建一个层,然后PaddingMode=“手动”

如果你指定“相同”随着“填充”值时创建一个层,然后PaddingMode=“相同”该软件在训练时计算填充的大小,以便在步幅等于1时输出与输入具有相同的大小。如果stride大于1,则输出大小为装天花板(inputSize /步),在那里inputSize输入的高度或宽度是和是对应维度上的步幅。如果可能的话,软件会在顶部和底部,以及左侧和右侧添加相同数量的填充。如果必须垂直添加奇数的填充,则软件会在底部添加填充。如果必须水平添加奇数的填充,则软件会在右侧添加额外的填充。

请注意

填充属性将在将来的版本中删除。使用PaddingSize代替。创建图层时,使用“填充”名称-值对参数指定填充。

要应用于垂直和水平输入边框的填充大小,指定为两个非负整数的向量[b],在那里一个填充是否应用于输入数据的顶部和底部b应用于左右两侧的填充。

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

卷积层的层权值,指定为FilterSize (1)——- - - - - -FilterSize (2)——- - - - - -NumChannels——- - - - - -NumFilters数组中。

不能使用名称-值对设置此属性。

数据类型:|

卷积层的层偏置,指定为1by - 1by -NumFilters数组中。

不能使用名称-值对设置此属性。

数据类型:|

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

这个参数总是等于这个卷积层的输入通道数。例如,如果输入是彩色图像,则输入的通道数为3。如果在当前层之前的卷积层的过滤器数量为16,则该层的通道数量为16。

如果NumChannels“汽车”,然后软件在训练期间推断出正确的通道数值。

例子:256

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

该软件将该因子乘以全局学习率,以确定层中权重的学习率。例如,如果WeightLearnRateFactor为2,则该层中权重的学习率是当前全局学习率的两倍。属性指定的设置来确定全局学习率trainingOptions函数。

例子:2

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

该软件将该因子乘以全局学习率,以确定该层中偏差的学习率。例如,如果BiasLearnRateFactor为2,则该层中偏差的学习率是当前全局学习率的两倍。属性指定的设置来确定全局学习率trainingOptions函数。

例子:2

权重的L2正则化因子,存储为标量值。

该软件将该因子与全局L2正则化因子相乘,以确定该层权重的学习率。例如,如果WeightL2Factor为2,则该层权重的L2正则化是全局L2正则化因子的两倍。属性指定全局L2正则化因子trainingOptions函数。

数据类型:

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

该软件将该因子乘以全局L2正则化因子,以确定该层中偏差的学习率。例如,如果BiasL2Factor为2,则该层中偏差的L2正则化是全局L2正则化因子的两倍。属性指定全局L2正则化因子trainingOptions函数。

例子:2

层名,指定为字符向量。如果的名字设置为,然后软件在训练时自动分配一个名字。

数据类型:字符

例子

全部折叠

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

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

函数中包含卷积层数组中。

层= [...imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,“步”,2) fullyConnectedLayer(10) softmaxLayer classificationLayer]
2 " Convolution 20 5x5 convolutions with stride [1 1] and padding [0 0 0 0 0] 3 " ReLU ReLU 4 " Max Pooling 2x2 Max Pooling with stride [2 2] and padding [0 0 0 0 0] 5 " Fully Connected 10 Fully Connected Layer 6 " Softmax Softmax 7 " Classification Output crossentropyex

创建一个带有32个过滤器的卷积层,每个过滤器的高和宽为5。沿边界填充输入图像2个像素。将偏差的学习率因子设置为2。从标准偏差为0.0001的高斯分布手动初始化权重。

层=卷积2dlayer (5,32,“填充”2,“BiasLearnRateFactor”, 2)
layer = Convolution2DLayer with properties: Name: " Hyperparameters FilterSize: [5 5] NumChannels: 'auto' NumFilters: 32 Stride: [1 1] PaddingMode: 'manual' PaddingSize: [2 2 2 2 2] Learnable Parameters Weights: [] Bias:[]显示所有属性

假设输入有彩色图像。从标准偏差为0.0001的高斯分布中手动初始化权重。

层。权重= randn([5 5 3 32]) * 0.0001;

该层中局部区域的大小为5x5。每个区域的颜色通道数为3。特征映射的数量是32(过滤器的数量)。因此,该层中有5*5*3*32个权重。

Randn ([5 5 3 32])从一个均值为0,标准差为1的高斯分布中返回一个5 × 5 × 3 × 32的值数组。将这些值乘以0.0001将高斯分布的标准偏差设置为0.0001。

类似地,初始化均值为1、标准差为0.00001的高斯分布的偏差。

层。偏见= randn([1 1 32])*0.00001 + 1;

有32个特征映射,因此有32个偏差。Randn ([1 1 32])从均值为0,标准差为1的高斯分布中返回1 × 1 × 32的值数组。将值乘以0.00001使值的标准偏差等于0.00001,加上1使高斯分布的平均值等于1。

假设输入的大小是28 × 28-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] PaddingMode: 'manual' PaddingSize: [1 1 0 0] Learnable Parameters Weights: [] Bias:[]显示所有属性

更多关于

全部展开

参考文献

乐存,B.博瑟,J. S.丹可,D.亨德森,R. E.霍华德,W.哈伯德和L. D.杰克。"用反向传播网络进行手写数字识别"《神经信息处理系统的进展》1990。

[2] LeCun, Y., L. Bottou, Y. Bengio, P. Haffner。基于梯度的学习应用于文档识别。IEEE论文集。第86卷,第2278-2324页,1998。

[3]墨菲,k.p.机器学习:一个概率的角度。马萨诸塞州剑桥:麻省理工学院出版社,2012年。

在R2016a中引入

这个话题有用吗?