二维卷积层
2-D卷积层将滑动卷积滤波器应用于2-D输入。该图层通过垂直和水平沿输入沿输入和计算重量和输入的点乘积来使滤波器旋转输入,然后添加偏置术语。
创建二维卷积层并设置层
=卷积层(filterSize
,numFilters
)FilterSize
和NumFilters
特性。
使用逗号分隔的名称-值对参数指定要沿图层输入边缘添加的填充大小或设置大步走
,稀释物料
,NumChannels
,参数和初始化,学习率和正规化, 和名称
属性。将名称用单引号括起来。
convolution2dLayer(16日“填充”,“相同”)
创建一个带有16个大小过滤器的2d卷积层[3 3]
和'相同的'
填充。在训练时,软件计算并设置填充的大小,使层输出的大小与输入的大小相同。
填充
- - - - - -输入边填充[0 0 0 0]
(默认)|非负整数矢量|'相同的'
输入边缘填充,指定为逗号分隔对'填充'
其中一个价值观是:
'相同的'
-增加软件在训练或预测时计算的大小填充,使步幅等于1时输出的大小与输入的大小相同。如果步幅大于1,则输出大小为装天花板(inputSize /步)
, 在哪里输入
输入的高度或宽度和宽度步
是相应维度中的步幅。如果可能,软件会在顶部和底部以及左侧和右侧添加相同数量的填充。如果必须垂直添加的填充具有奇数值,则软件会在底部添加额外填充。如果必须水平添加的填充具有奇数值,则软件会在右侧重新添加额外的填充。
非负整数p
-添加大小填充p
到输入的所有边缘。
向量[A B]
非负整数-添加大小填充一个
到输入和填充的顶部和底部大小b
到左右。
向量[t b l r]
非负整数-添加大小填充t
到顶部,b
到底,,l
向左,和r
在输入的右侧。
例子:“填充”,1
在输入的顶部和底部添加一行填充,在左侧和右侧添加一列填充。
例子:'填充','同样'
添加填充,使得输出具有与输入相同的大小(如果步幅等于1)。
FilterSize
- - - - - -过滤器的高度和宽度过滤器的高度和宽度,指定为向量[w h]
两个正整数,在哪里h
是高度和w
宽度。FilterSize
定义输入中神经元连接到的局部区域的大小。
在创建图层时,可以指定FilterSize
作为标量使用相同的值作为高度和宽度。
例子:5 [5]
指定高度和宽度分别为5和5的过滤器。
NumFilters
- - - - - -数量的过滤器此属性是只读的。
筛选器数量,指定为正整数。该数字对应于连接到输入中的相同区域的卷积层中的神经元数。此参数确定卷积层输出中的通道(特征映射)的数量。
数据类型:仅有一个的
|双倍的
|INT8.
|int16
|INT32.
|INT64.
|uint8
|uint16
|uint32
|uint64
大步走
- - - - - -遍历输入的步长[1 1]
(默认)|两个正整数的向量垂直和水平遍历输入的步长,指定为向量[A B]
两个正整数,在哪里一个
是垂直步长和b
为水平步长。在创建图层时,可以指定大步走
作为标量,对两步长使用相同的值。
例子:3 [2]
指定垂直步长为2,水平步长为3。
稀释物料
- - - - - -扩张卷积的因子[1 1]
(默认)|两个正整数的向量扩展卷积的因子(也称为无卷积),指定为矢量[w h]
两个正整数,在哪里h
是垂直扩张和w
是水平膨胀。创建层时,可以指定稀释物料
作为标量以适用于水平和垂直扩张的相同值。
使用扩大的卷积来增加该层的感受野(该层可以看到的输入区域),而不增加参数或计算的数量。
通过在每个滤波器元件之间插入零来扩展滤波器。扩张因子确定用于采样输入的步骤或等效地对滤波器的上采样因子进行采样。它对应于有效的滤波器大小(过滤器的大小- 1) *膨胀系数+1.例如,具有膨胀因子的3×3滤波器[2 2]
相当于一个元素之间为零的5 × 5滤波器。
例子:3 [2]
填充尺寸
- - - - - -大小的填充[0 0 0 0]
(默认)|四个非负整数的向量应用于输入边框的填充大小,指定为矢量[t b l r]
四个非负整数,其中t
填充是施加到顶部的,b
是底部的填充物,l
填充是否应用于左侧,和r
是应用到右边的填充。
当你创建一个图层时,使用'填充'
用于指定填充大小的名称-值对参数。
例子:[1 1 2 2]
在输入的顶部和底部添加一行填充,并在输入的左侧和右侧添加两列填充。
PaddingMode
- - - - - -确定填充大小的方法'手动的'
(默认)|'相同的'
确定填充大小的方法,指定为'手动的'
或者'相同的'
.
该软件自动设置值PaddingMode
基于这一点'填充'
在创建图层时指定的值。
如果你设定'填充'
选项为标量或非负整数向量,则软件自动设置PaddingMode
到'手动的'
.
如果你设定'填充'
选项'相同的'
,则软件自动设定PaddingMode
到'相同的'
并计算训练时填充的大小,使stride等于1时输出的大小与输入的大小相同。如果步幅大于1,则输出大小为装天花板(inputSize /步)
, 在哪里输入
输入的高度或宽度和宽度步
是相应维度中的步幅。如果可能,软件会在顶部和底部以及左侧和右侧添加相同数量的填充。如果必须垂直添加的填充具有奇数值,则软件会在底部添加额外填充。如果必须水平添加的填充具有奇数值,则软件会在右侧重新添加额外的填充。
填充
- - - - - -大小的填充[0 0]
(默认)|两个非负整数矢量请注意
填充
财产将在将来的释放中删除。用填充尺寸
反而。创建图层时,使用'填充'
用于指定填充大小的名称-值对参数。
填充的大小垂直和水平地应用于输入边框,指定为矢量[A B]
两个非负整数,其中一个
填充是否应用于输入数据的顶部和底部b
是应用于左边和右边的填充。
例子:[1 1]
在输入的顶部和底部添加一行填充,在左侧和右侧添加一列填充。
PaddingValue
- - - - - -值到填充数据“symmetric-include-edge”
|“对称排除边”
|“复制”
值来填充数据,指定为以下其中之一:
PaddingValue |
描述 | 例子 |
---|---|---|
标量子 | 用指定的标量值填充。 |
|
“symmetric-include-edge” |
焊盘使用镜像值的输入,包括边缘值。 |
|
“对称排除边” |
使用输入的镜像值(不包括边值)填充。 |
|
“复制” |
使用输入的重复边框元素填充 |
|
数据类型:仅有一个的
|双倍的
|INT8.
|int16
|INT32.
|INT64.
|uint8
|uint16
|uint32
|uint64
|char
|一串
NumChannels
- - - - - -每个滤波器的通道数“汽车”
(默认)|正整数每个过滤器的通道数,指定为“汽车”
或正整数。
此参数始终等于输入到卷积层的输入的通道数。例如,如果输入是彩色图像,则输入的通道数为3.如果在电流层之前的卷积层的滤波器的数量为16,则当前层的通道数为16.
如果NumChannels
是“汽车”
,然后软件确定培训时间的通道数。
例子:256
WeightsInitializer
- - - - - -函数初始化权重“glorot”
(默认)|“他”
|'窄正常'
|“零”
|“的”
|函数处理初始化权重的功能,指定为以下内容之一:
“glorot”
-使用gloria初始化器初始化权重[4](也称为Xavier初始化器)。格洛特初始化器从均值和方差均为零的均匀分布中独立抽样2 / (numIn + numOut)
, 在哪里numin = filtersize(1)* filtersize(2)* numchannels
和numOut = FilterSize (1) * FilterSize (2) * NumFilters
.
“他”
-使用He初始化器初始化权值[5].He初始值设定项从均值和方差为零的正态分布中采样2 / numIn
, 在哪里numin = filtersize(1)* filtersize(2)* numchannels
.
'窄正常'
- 通过独立从正常分布采样,零平均值和标准偏差0.01来初始化权重。
“零”
—初始化权值为0。
“的”
—使用“1”初始化权重。
函数句柄——用自定义函数初始化权重。如果指定函数句柄,则该函数必须是这种形式的重量= func(深圳)
, 在哪里深圳
是重量的大小。例如,看到指定自定义权重初始化函数.
该图层仅初始化权重权重
属性是空的。
数据类型:char
|一串
|function_handle
偏见初始化器
- - - - - -函数初始化偏差“零”
(默认)|'窄正常'
|“的”
|函数处理函数初始化偏差,指定为以下任意一个:
“零”
- 用零初始化偏差。
“的”
- 初始化偏差。
'窄正常'
- 通过从正常分布的自主分布采样,零平均值和标准偏差0.01,初始化偏差。
函数句柄——用自定义函数初始化偏差。如果指定函数句柄,则该函数必须是这种形式的BIAS = FUNC(SZ)
, 在哪里深圳
是偏见的大小。
该层仅在偏见
属性是空的。
数据类型:char
|一串
|function_handle
权重
- - - - - -层重量[]
(默认)|数字数组卷积层的层权重,指定为数字数组。
层权重是可学习参数。您可以直接指定权重的初始值权重
属性的层。当你训练一个网络,如果权重
层的属性为非空,则trainNetwork
用来权重
属性作为初始值。如果权重
属性为空trainNetwork
使用指定的初始化程序WeightsInitializer
属性的层。
在培训时,权重
是一个过滤(1)
-经过-FilterSize (2)
-经过-NumChannels
-经过-NumFilters
数组中。
数据类型:仅有一个的
|双倍的
偏见
- - - - - -层的偏见[]
(默认)|数字数组卷积层的层偏差,指定为数字数组。
层偏差是可学习的参数。当你训练一个网络,如果偏见
那么,它是非空的trainNetwork
用来偏见
属性作为初始值。如果偏见
是空的,然后trainNetwork
使用指定的初始化程序偏见初始化器
.
在培训时,偏见
这是一个1乘1的座位-NumFilters
数组中。
数据类型:仅有一个的
|双倍的
加权比率因子
- - - - - -权重的学习率因子1
(默认)|负的标量权值的学习率因子,指定为非负标量。
该软件通过全局学习速率乘以此因素来确定该层中权重的学习率。例如,如果加权比率因子
是2
,则该层权重的学习率为当前全局学习率的两倍。该软件根据您指定的设置来确定全局学习率培训选项
函数。
数据类型:仅有一个的
|双倍的
|INT8.
|int16
|INT32.
|INT64.
|uint8
|uint16
|uint32
|uint64
BiasLearnRateFactor
- - - - - -偏差的学习率系数1
(默认)|负的标量偏差的学习率因子,指定为非负标量。
软件将该系数乘以全局学习率,以确定该层中偏差的学习率。例如,如果BiasLearnRateFactor
是2
,则该层偏差的学习率是当前全局学习率的两倍。该软件根据您指定的设置来确定全局学习率培训选项
函数。
数据类型:仅有一个的
|双倍的
|INT8.
|int16
|INT32.
|INT64.
|uint8
|uint16
|uint32
|uint64
WeightL2Factor
- - - - - -l2重量的正则化因子l2权值的正则化因子,指定为非负标量。
软件将此因素乘以全局l2正则化因子的确定l2对该层中的重量进行正则化。例如,如果WeightL2Factor
是2
,然后l2此图层中重量的正则化是全局的两倍l2正则化因子。您可以指定全局l2正则化因子使用培训选项
函数。
数据类型:仅有一个的
|双倍的
|INT8.
|int16
|INT32.
|INT64.
|uint8
|uint16
|uint32
|uint64
BiasL2Factor
- - - - - -l2偏差的正则化因子0
(默认)|负的标量l2偏差的正则化因子,指定为非负标量。
软件将此因素乘以全局l2正则化因子的确定l2对该层中的偏差进行正常化。例如,如果BiasL2Factor
是2
,然后l2这一层偏见的正规化程度是全球的两倍l2正则化因子。您可以指定全局l2正则化因子使用培训选项
函数。
数据类型:仅有一个的
|双倍的
|INT8.
|int16
|INT32.
|INT64.
|uint8
|uint16
|uint32
|uint64
名称
- - - - - -层的名字''
(默认)|特征向量|字符串标量层名,指定为字符向量或字符串标量。为层
数组输入trainNetwork
,assembleNetwork
,分层图
, 和dlnetwork.
函数自动为层分配名称名称
设置为''
.
数据类型:char
|一串
numinputs.
- - - - - -输入数量1
(默认)此属性是只读的。
层的输入数。这一层只接受单个输入。
数据类型:双倍的
InputNames
- - - - - -输入名称{'在'}
(默认)此属性是只读的。
输入层名。这一层只接受单个输入。
数据类型:细胞
NumOutputs
- - - - - -输出数量1
(默认)此属性是只读的。
层输出的数量。这一层只有一个输出。
数据类型:双倍的
OutputNames
- - - - - -输出的名字{'出去'}
(默认)此属性是只读的。
图层的输出名称。这一层只有一个输出。
数据类型:细胞
创建一个包含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]
图层= 7x1层阵列,图层:1''图像输入28x28x1图像与'zerocenter'归一化2''卷积20 5x5卷积与步幅[1 1]和填充[0 0 0 0] 3''Relu Relu 4''Max汇集2x2 max汇集步进[2 2]和填充[0 0 0 0] 5''完全连接的10完全连接的第6层''softmax softmax 7''分类输出crossentropyex
要指定权重和偏差初始值设定项函数,请使用WeightsInitializer
和偏见初始化器
属性分别。要直接指定权重和偏差,请使用权重
和偏见
属性分别。
指定初始化功能
创建一个带有32个过滤器的卷积层,每个过滤器的高度和宽度都为5,并指定权重初始化器为He初始化器。
filterSize = 5;numFilters = 32;tillay =卷积2dlayer(过滤,numfilters,...“WeightsInitializer”,“他”)
图层=具有属性的卷积2dlayer:'''''Quand参数过滤:[5 5] NumChannels:'Auto'NumFilters:32步部:[1 1]膨胀物料:[1] PaddingMode:'手动'拼接:[0 0 0]PaddingSvalue:0 Learnable参数权重:[]偏置:[]显示所有属性
请注意,权重
和偏见
属性是空的。在训练时,软件使用指定的初始化函数初始化这些属性。
指定自定义初始化函数
要为权重和偏差指定自己的初始化函数,请设置WeightsInitializer
和偏见初始化器
属性设置为函数句柄。对于这些属性,指定将权重和偏差的大小作为输入和输出初始化值的函数句柄。
使用32个过滤器创建卷积层,每个滤波器为5,5个,并指定从高斯分布中采样权重和偏置的初始化器,标准偏差为0.0001。
filterSize = 5;numFilters = 32;tillay =卷积2dlayer(过滤,numfilters,...“WeightsInitializer”, @(sz) rand(sz) * 0.0001,...“BiasInitializer”, @(sz) rand(sz) * 0.0001)
图层=具有属性的卷积2dlayer:'''''Quand参数过滤:[5 5] NumChannels:'Auto'NumFilters:32步部:[1 1]膨胀物料:[1] PaddingMode:'手动'拼接:[0 0 0]PaddingSvalue:0 Learnable参数权重:[]偏置:[]显示所有属性
再一次,权重
和偏见
属性是空的。在训练时,软件使用指定的初始化函数初始化这些属性。
直接指定权重和偏差
创建一个完全连接的图层,输出大小为10,并设置重量和偏置W
和b
在MAT文件中conv2dweights.mat.
分别。
filterSize = 5;numFilters = 32;负载Conv2dWeightstillay =卷积2dlayer(过滤,numfilters,...“重量”W,...“偏见”, b)
图层=具有属性的卷积2dlayer:'''''''Quand参数过滤:[5 5] NumChannels:3 NumFilters:32步(32步):[1] DilationFactor:[1] PaddingMode:'手动'Paddingsize:[0 0 0] PaddingValue:0可学习参数权重:[5x5x3x32双]偏置:[1x1x32双]显示所有属性
在这里,权重
和偏见
属性包含指定的值。在培训时间,如果这些属性是非空的,则软件将指定的值用作初始权重和偏差。在这种情况下,该软件不使用初始化器功能。
假设输入的大小为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] DilationFactor: [1 1] PaddingMode: 'manual' PaddingSize: [1 1 0] PaddingValue: 0 Learnable Parameters Weights: [] Bias:[]显示所有属性
2-D卷积层将滑动卷积滤波器应用于2-D输入。该层通过沿输入垂直和水平移动滤波器来卷积输入,计算权重和输入的点积,然后添加偏置项。
卷积层由各种组件组成。[1]
卷积层由神经元组成,这些神经元连接到输入图像的子区域或前一层的输出。该层在扫描图像时学习这些区域所定位的特征。当创建一个层使用Convolution2Dlayer.
函数中指定这些区域的大小filterSize
输入参数。
对于每个区域,trainNetwork
功能计算权重和输入的点乘积,然后添加一个偏置项。将应用于图像中的区域的一组权重被称为a筛选. 过滤器沿输入图像垂直和水平移动,对每个区域重复相同的计算。换句话说,滤波器卷积输入。
这张图片显示了一个3 × 3的过滤器扫描输入。下面的映射表示输入,上面的映射表示输出。
过滤器移动的步长称为步.属性可以指定步长大步走
名称-值对参数。神经元连接到的局部区域可能会重叠,这取决于filterSize
和“步”
价值观
该图像显示3×3滤波器通过带有寿司的输入扫描2.下映射表示输入,上部图表示输出。
过滤器中的权重数为h*w*c, 在哪里h是高度,和w是过滤器的宽度,分别为滤波器和c是输入中的通道数。例如,如果输入是彩色图像,则颜色通道的数量为3.滤波器的数量确定卷积层的输出中的信道数。使用该文件指定过滤器的数量numFilters
参数与Convolution2Dlayer.
函数。
扩展卷积是一种卷积,在这种卷积中,滤波器通过插入元素之间的空格展开。属性指定膨胀系数'膨胀因子'
财产。
使用扩大的卷积来增加该层的感受野(该层可以看到的输入区域),而不增加参数或计算的数量。
通过在每个滤波器元件之间插入零来扩展滤波器。扩张因子确定用于采样输入的步骤或等效地对滤波器的上采样因子进行采样。它对应于有效的滤波器大小(过滤器的大小- 1) *膨胀系数+1.例如,具有膨胀因子的3×3滤波器[2 2]
相当于一个元素之间为零的5 × 5滤波器。
这张图片显示了一个3 × 3的滤光片,放大了2倍扫描通过输入。下面的映射表示输入,上面的映射表示输出。
当一个滤波器沿着输入移动时,它使用相同的权值集和相同的卷积偏差,形成一个特征映射.每个特征图是使用不同的重量和不同偏差集的卷积的结果。因此,特征映射的数量等于过滤器的数量。卷积层中的参数总数是((h*w*c+ 1)*数量的过滤器),其中1为偏差。
控件也可以对输入图像的边框垂直或水平应用填充'填充'
名称-值对参数。填充是将值附加到输入的边框以增加其大小。通过调整填充,可以控制层的输出大小。
这张图片显示了一个3 × 3的过滤器扫描输入,填充大小为1。下面的映射表示输入,上面的映射表示输出。
卷积层的输出高度和宽度为(输入大小– ((过滤器的大小- 1)*膨胀系数+ 1 + 2*填充) /大步走+ 1。此值必须是要完全覆盖的整数的整数。如果这些选项的组合不会引导要完全覆盖的图像,则默认情况下的软件忽略了卷积中右侧和底部边缘的剩余部分。
输出高度和宽度的乘积给出了特征图中神经元的总数地图大小.卷积层中的神经元总数(输出大小)为地图大小*数量的过滤器.
例如,假设输入图像是一个32 × 32 × 3的彩色图像。对于一个包含8个过滤器,过滤器大小为5 × 5的卷积层,每个过滤器的权重数为5 * 5 * 3 = 75,层中的参数总数为(75 + 1)* 8 = 608。如果每个方向的步幅为2,并指定填充大小为2,则每个feature map为16 × 16。这是因为(32 - 5 + 2 * 2)/2 + 1 = 16.5,并且一些最外层的填充到右边和底部的图像被丢弃。最后,层中神经元的总数为16 * 16 * 8 = 2048。
通常,这些神经元的结果通过某种形式的非线性,例如整流的线性单元(Relu)。
在定义卷积层时,您可以使用名称值对参数调整图层的学习速率和正常化选项。如果您选择不指定这些选项,那么trainNetwork
使用定义的全局培训选项培训选项
函数。有关全局和层训练选项的详细信息,请参见卷积神经网络参数的建立与训练.
卷积神经网络可以由一个或多个卷积层组成。卷积层的数量取决于数据的数量和复杂性。
行为在R2019a中改变
从R2019a开始,软件默认使用gloria初始化器初始化该层的层权值。这种行为有助于稳定训练,通常减少深度网络的训练时间。
在以前的版本中,默认情况下,该软件通过从正常分布采样,零平均值和方差0.01,通过采样来初始化层权重。重现此行为,设置“WeightsInitializer”
层选择'窄正常'
.
莱昆,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] 墨菲,K.P。机器学习:一个概率的视角.马萨诸塞州剑桥:麻省理工学院出版社,2012。
[4] Glorot,Xavier和Yoshua Bengio。“了解训练深馈神经网络的难度。”在第十三国际人工智能和统计国际会议的诉讼程序, 249 - 356。撒丁岛,意大利:AISTATS, 2010。
[5]他,Kaiming,湘雅张,邵庆仁,剑孙。“深入研究整流器:超越了在想象集分类上的人力水平表现。”在2015 IEEE计算机视觉国际会议论文集,1026-1034。华盛顿特区:IEEE计算机视觉协会,2015年。
使用说明和限制:
对于代码生成,PaddingValue
参数必须等于0
,这是默认值。
使用说明和限制:
对于代码生成,PaddingValue
参数必须等于0
,这是默认值。
trainNetwork
|reluLayer
|BatchnormalizationLayer.
|maxPooling2dLayer
|fullyConnectedLayer
|groupedConvolution2dLayer
|深网络设计师
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。