convolution2dLayer
二维卷积层
描述
2-D卷积层对输入应用滑动滤波器。该层通过沿着输入垂直和水平移动滤波器和计算权重和输入的点积来卷积输入,然后添加一个偏置项。
创建
语法
layer = convolution2dLayer(filterSize,numFilters)
layer = convolution2dLayer(filterSize,numFilters,Name,Value)
描述
创建一个2-D卷积层并设置FilterSize而且NumFilters属性。层
= convolution2dLayer (filterSize
,numFilters
)
设置可选的步,NumChannels,WeightLearnRateFactor,BiasLearnRateFactor,WeightL2Factor,BiasL2Factor,的名字属性使用名称-值对。要指定输入填充,请使用层
= convolution2dLayer (filterSize
,numFilters
,名称,值
)“填充”
名称-值对参数。例如,convolution2dLayer(11, 96,“大步”4“填充”,1)
创建一个带有96个大小过滤器的二维卷积层(11 11)
,一大步(4 - 4)
,以及在层输入的所有边缘上为0的大小为1的填充。可以指定多个名称-值对。将每个属性名用单引号括起来。
输入参数
名称-值对参数
使用逗号分隔的名称-值对参数指定要在层输入的边缘添加的零填充的大小,或设置步
,NumChannels
,WeightLearnRateFactor
,BiasLearnRateFactor
,WeightL2Factor
,BiasL2Factor
,的名字
属性。名字用单引号括起来。
convolution2dLayer(16日“填充”,“相同”)
创建一个具有16个大小过滤器的2-D卷积层[3 3]
而且“相同”
填充。在训练时,软件计算零填充的大小,使层输出具有与输入相同的大小。
“填充”
- - - - - -要添加到输入边的填充
[0 0 0 0]
(默认)|非负整数的向量|“相同”
要添加到输入边的填充,指定为逗号分隔的对,由“填充”
和以下其中之一:
“相同”
- - - - - -该软件在训练时计算填充的大小,以便在步幅等于1时输出与输入具有相同的大小。如果stride大于1,则输出大小为装天花板(inputSize /步)
,在那里inputSize
输入的高度或宽度是和步
是对应维度上的步幅。如果可能的话,软件会在顶部和底部,以及左侧和右侧添加相同数量的填充。如果必须垂直添加奇数的填充,则软件会在底部添加填充。如果必须水平添加奇数的填充,则软件会在右侧添加额外的填充。非负整数
p
-添加填充大小p
到输入的所有边。向量
[b]
的非负整数-添加填充大小一个
到输入和填充大小的顶部和底部b
向左和向右。向量
[t b l r]
的非负整数-添加填充大小t
到了顶端,b
到底,l
向左,然后r
在输入的右边。
例子:“填充”,1
将一行填充添加到顶部和底部,并将一列填充添加到输入的左侧和右侧。
例子:“填充”,“相同”
添加填充,使输出与输入大小相同(如果stride = 1)。
属性
FilterSize
- - - - - -过滤器的高度和宽度
两个正整数的向量
过滤器的高度和宽度,指定为两个正整数的向量[w h]
,在那里h
是高度和w
是宽度。FilterSize
定义输入中神经元连接的局部区域的大小。
如果你设置FilterSize
使用输入参数,然后可以指定FilterSize
作为标量,对两个维度使用相同的值。
例子:5 [5]
指定高5和宽5的筛选器。
NumFilters
- - - - - -过滤器数量
正整数
筛选器的数目,指定为正整数。这个数字对应于卷积层中连接到输入中相同区域的神经元数量。这个参数决定了卷积层输出中通道(特征映射)的数量。
例子:96
步
- - - - - -遍历输入的步长
[1]
(默认)|两个正整数的向量
垂直和水平遍历输入的步长,指定为两个正整数的向量[b]
,在那里一个
垂直步长和b
是水平步长。在创建层时,您可以指定步
作为一个标量,对两个维度使用相同的值。
例子:3 [2]
指定垂直步长为2,水平步长为3。
PaddingSize
- - - - - -填充尺寸
[0 0 0 0]
(默认)|四个非负整数的向量
要应用于输入边框的填充大小,指定为由四个非负整数组成的向量[t b l r]
,在那里t
是填充到顶部,b
是填充到底部,l
填充应用于左侧,和r
是应用于右侧的填充。
创建图层时,使用“填充”
名称-值对参数指定填充。
例子:[1,2 2]
将一行填充添加到顶部和底部,并将两列填充添加到输入的左侧和右侧。
PaddingMode
- - - - - -方法来确定填充大小
“手动”
(默认)|“相同”
方法来确定填充大小,指定为“手动”
或“相同”
.
如果指定非负整数的标量或向量作为“填充”
值时创建一个层,然后PaddingMode
=“手动”
.
如果你指定“相同”
随着“填充”
值时创建一个层,然后PaddingMode
=“相同”
.该软件在训练时计算填充的大小,以便在步幅等于1时输出与输入具有相同的大小。如果stride大于1,则输出大小为装天花板(inputSize /步)
,在那里inputSize
输入的高度或宽度是和步
是对应维度上的步幅。如果可能的话,软件会在顶部和底部,以及左侧和右侧添加相同数量的填充。如果必须垂直添加奇数的填充,则软件会在底部添加填充。如果必须水平添加奇数的填充,则软件会在右侧添加额外的填充。
填充
- - - - - -填充尺寸
[0 0]
(默认)|两个非负整数的向量
请注意
填充
属性将在将来的版本中删除。使用PaddingSize
代替。创建图层时,使用“填充”
名称-值对参数指定填充。
要应用于垂直和水平输入边框的填充大小,指定为两个非负整数的向量[b]
,在那里一个
填充是否应用于输入数据的顶部和底部b
应用于左右两侧的填充。
例子:[1]
将一行填充添加到顶部和底部,并将一列填充添加到输入的左侧和右侧。
权重
- - - - - -层的重量
四维数组
卷积层的层权值,指定为FilterSize (1)
——- - - - - -FilterSize (2)
——- - - - - -NumChannels
——- - - - - -NumFilters
数组中。
不能使用名称-值对设置此属性。
数据类型:单
|双
偏见
- - - - - -层的偏见
三维数组
卷积层的层偏置,指定为1by - 1by -NumFilters
数组中。
不能使用名称-值对设置此属性。
数据类型:单
|双
NumChannels
- - - - - -每个过滤器的通道数
“汽车”
(默认)|正整数
每个过滤器的通道数,指定为“汽车”
或者一个正整数。
这个参数总是等于这个卷积层的输入通道数。例如,如果输入是彩色图像,则输入的通道数为3。如果在当前层之前的卷积层的过滤器数量为16,则该层的通道数量为16。
如果NumChannels
是“汽车”
,然后软件在训练期间推断出正确的通道数值。
例子:256
WeightLearnRateFactor
- - - - - -学习率因子为权重
1(默认)|负的标量
权重的学习率因子,指定为非负标量。
该软件将该因子乘以全局学习率,以确定层中权重的学习率。例如,如果WeightLearnRateFactor
为2,则该层中权重的学习率是当前全局学习率的两倍。属性指定的设置来确定全局学习率trainingOptions
函数。
例子:2
BiasLearnRateFactor
- - - - - -学习率因素偏差
1(默认)|负的标量
偏差的学习率因子,指定为非负标量。
该软件将该因子乘以全局学习率,以确定该层中偏差的学习率。例如,如果BiasLearnRateFactor
为2,则该层中偏差的学习率是当前全局学习率的两倍。属性指定的设置来确定全局学习率trainingOptions
函数。
例子:2
WeightL2Factor
- - - - - -权重的L2正则化因子
1(默认)|标量值
权重的L2正则化因子,存储为标量值。
该软件将该因子与全局L2正则化因子相乘,以确定该层权重的学习率。例如,如果WeightL2Factor
为2,则该层权重的L2正则化是全局L2正则化因子的两倍。属性指定全局L2正则化因子trainingOptions
函数。
数据类型:双
BiasL2Factor
- - - - - -偏差的L2正则化因子
0(默认)|负的标量
偏差的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:[]显示所有属性
更多关于
卷积的层
卷积层由连接到输入的小区域或前一层的神经元组成。这些区域被称为过滤器.属性指定这些区域的大小filterSize
输入参数。
对于每个区域,软件计算权重和输入的点积,然后添加一个偏差项。然后,滤波器沿输入垂直和水平移动,对每个区域重复相同的计算,即对输入进行卷积。它移动的步长称为步.属性指定此步长步
财产。神经元连接的这些局部区域可能会重叠,这取决于过滤器的大小和步幅。
过滤器使用的权重数为h*w*c,在那里h是高度,和w是滤镜的宽度大小,和c输入中的通道数(例如,如果输入是彩色图像,则通道数为3)。当滤波器沿着输入移动时,它对卷积使用相同的权重和偏置集,形成特征映射。卷积层通常有多个特征映射,每个特征映射都有一组不同的权重和偏差。过滤器的数量决定了特征映射的数量。
卷积层的参数总数为((h*w*c+ 1) *过滤器数量),其中1为偏差。
卷积层的输出高度和宽度分别为(输入的大小- - - - - -过滤器的大小+ 2 *填充)/步+ 1。这个值必须是整数,才能完全覆盖整个图像。如果这些参数的组合并不能使图像被完全覆盖,那么软件默认情况下会忽略图像在卷积中沿着右边缘和底边的剩余部分。
例如,特征图中神经元的总数地图大小,是输出高度和宽度的乘积。那么卷积层中神经元的总数(输出大小)为地图大小*过滤器数量.
例如,假设输入图像是一个28 × 28 × 3的彩色图像。对于一个有16个滤波器,滤波器大小为8 × 8的卷积层,每个滤波器的权重数为8*8*3 = 192,层中的参数总数为(192+1)* 16 = 3088。假设每个方向的stride为4,则每个特征图中的神经元总数为6 × 6((28 - 8+0)/4 + 1 = 6),则该层中的神经元总数为6*6*16 = 256。通常,来自这些神经元的结果会经过某种形式的非线性,例如整流线性单元(ReLU)。
参考文献
乐存,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中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。