maxPooling2dLayer
最大池化层
描述
二维最大池化层通过将输入划分为矩形池化区域来执行下采样,然后计算每个区域的最大值。
创建
描述
创建一个最大池层并设置层
= maxPooling2dLayer (poolSize
)PoolSize
财产。
设置可选的层
= maxPooling2dLayer (poolSize
,名称,值
)步
,名字
,HasUnpoolingOutputs
使用名称-值对的属性。要指定输入填充,使用“填充”
名称-值对参数。例如,maxPooling2dLayer(2步,3)
创建一个带有池大小的最大池层(2 - 2)
和步[3 3]
。可以指定多个名称-值对。将每个属性名称用单引号括起来。
输入参数
使用逗号分隔的名称-值对参数来指定要沿图层输入的边缘添加的填充大小,并设置步
,名字
,HasUnpoolingOutputs
属性。将名字用单引号括起来。
例子:maxPooling2dLayer(2步,3)
创建一个带有池大小的最大池层(2 - 2)
和步[3 3]
。
填充
- - - - - -输入边填充
[00 00 00 00]
(默认)|非负整数向量|“相同”
输入边缘填充,指定为由逗号分隔的对“填充”
其中一个值是:
“相同”
-添加由软件在训练或预测时计算的大小填充,以便在步幅等于1时输出与输入具有相同的大小。如果步幅大于1,则输出大小为装天花板(inputSize /步)
,在那里inputSize
是输入和的高度还是宽度步
是相应维度中的步幅。如果可能的话,软件会在顶部和底部以及左侧和右侧添加相同数量的填充。如果必须垂直添加的填充值为奇数,则软件会在底部添加额外的填充。如果必须横向添加的填充值为奇数,则软件会在右侧添加额外的填充。非负整数
p
-添加大小的填充p
到输入的所有边。向量
[b]
非负整数-添加大小的填充一个
到输入和填充的大小的顶部和底部b
向左和向右。向量
[au:]
非负整数-添加大小的填充t
到顶端,b
在底部,l
在左边,还有r
在输入的右边。
例子:“填充”,1
在输入的顶部和底部添加一行填充,并在输入的左侧和右侧添加一列填充。
例子:“填充”,“相同”
添加填充,使输出具有与输入相同的大小(如果stride等于1)。
属性
马克斯池
PoolSize
- - - - - -池化区域的维度
两个正整数的向量
池化区域的维度,指定为两个正整数的向量[w h]
,在那里h
是高度和w
是宽度。在创建图层时,您可以指定PoolSize
作为标量,以便在两个维度上使用相同的值。
如果跨步尺寸步
小于各自的池化维度,则池化区域重叠。
填充尺寸PaddingSize
必须小于池化区域的尺寸PoolSize
。
例子:(2 - 1)
指定高度为2,宽度为1的池化区域。
步
- - - - - -遍历输入的步长
[1]
(默认)|两个正整数的向量
垂直和水平遍历输入的步长,指定为两个正整数的向量[b]
,在那里一个
垂直步长是和b
为水平步长。在创建图层时,您可以指定步
作为标量,以便在两个维度上使用相同的值。
如果跨步尺寸步
小于各自的池化维度,则池化区域重叠。
填充尺寸PaddingSize
必须小于池化区域的尺寸PoolSize
。
例子:3 [2]
指定垂直步长为2,水平步长为3。
PaddingSize
- - - - - -填充尺寸
[00 00 00 00]
(默认)|四个非负整数的向量
应用于输入边框的填充大小,指定为矢量[au:]
四个非负整数,其中t
是应用于顶部的填充,b
是应用于底部的填充,l
填充是否应用于左侧,和r
是应用于右侧的填充。
创建图层时,使用“填充”
名称-值对参数指定填充大小。
例子:[1 1 2 2]
在顶部和底部添加一行填充,并在输入的左侧和右侧添加两列填充。
PaddingMode
- - - - - -方法确定填充大小
“手动”
(默认)|“相同”
方法来确定填充大小,指定为“手动”
或“相同”
。
的值由软件自动设置PaddingMode
基于“填充”
创建图层时指定的值。
如果你设置
“填充”
选项为标量或非负整数向量,则软件自动设置PaddingMode
来“手动”
。如果你设置
“填充”
选项“相同”
,则软件自动设置PaddingMode
来“相同”
并计算训练时填充的大小,以便当步幅等于1时,输出与输入具有相同的大小。如果步幅大于1,则输出大小为装天花板(inputSize /步)
,在那里inputSize
是输入和的高度还是宽度步
是相应维度中的步幅。如果可能的话,软件会在顶部和底部以及左侧和右侧添加相同数量的填充。如果必须垂直添加的填充值为奇数,则软件会在底部添加额外的填充。如果必须横向添加的填充值为奇数,则软件会在右侧添加额外的填充。
填充
- - - - - -填充尺寸
[0 0]
(默认)|两个非负整数的向量
请注意
填充
属性将在将来的版本中删除。使用PaddingSize
代替。创建图层时,使用“填充”
名称-值对参数指定填充大小。
垂直和水平方向应用于输入边框的填充大小,指定为矢量[b]
两个非负整数的,其中一个
填充是否应用于输入数据和的顶部和底部b
是应用于左侧和右侧的填充。
例子:[1]
在输入的顶部和底部添加一行填充,并在输入的左侧和右侧添加一列填充。
HasUnpoolingOutputs
- - - - - -输出到解池层的标志
假
(默认)|真正的
输出到解池层的标志,指定为真正的
或假
。
如果HasUnpoolingOutputs
值=假
,则最大池化层有一个名称为“出”
。
要使用最大池化层的输出作为最大解池化层的输入,请设置HasUnpoolingOutputs
价值真正的
。在这种情况下,最大池化层有两个额外的输出,你可以连接到最大解池化层:
“指标”
—每个分区的最大索引值。“大小”
-输入特征图的大小。
为了允许输出到最大解池层,最大池层的池化区域必须是不重叠的。
有关如何解除最大池化层的输出池的详细信息,请参见maxUnpooling2dLayer
。
层
名字
- - - - - -层的名字
”
(默认)|特征向量|字符串标量
图层名称,指定为字符向量或字符串标量。为层
数组输入trainNetwork
,assembleNetwork
,layerGraph
,dlnetwork
函数会自动给有名称的图层分配名称”
。
数据类型:字符
|字符串
NumInputs
- - - - - -输入数
1
(默认)
该属性是只读的。
层的输入数。这一层只接受一个输入。
数据类型:双
InputNames
- - - - - -输入名字
{'在'}
(默认)
该属性是只读的。
输入图层的名称。这一层只接受一个输入。
数据类型:细胞
NumOutputs
- - - - - -输出数量
1(默认)|3.
层的输出数。
如果HasUnpoolingOutputs
值=假
,则最大池化层有一个名称为“出”
。
要使用最大池化层的输出作为最大解池化层的输入,请设置HasUnpoolingOutputs
价值真正的
。在这种情况下,最大池化层有两个额外的输出,你可以连接到最大解池化层:
“指标”
—每个分区的最大索引值。“大小”
-输入特征图的大小。
为了允许输出到最大解池层,最大池层的池化区域必须是不重叠的。
有关如何解除最大池化层的输出池的详细信息,请参见maxUnpooling2dLayer
。
数据类型:双
OutputNames
- - - - - -输出的名字
{“出”}
(默认)|{“了”、“指数”,“大小”}
输出图层的名称。
如果HasUnpoolingOutputs
值=假
,则最大池化层有一个名称为“出”
。
要使用最大池化层的输出作为最大解池化层的输入,请设置HasUnpoolingOutputs
价值真正的
。在这种情况下,最大池化层有两个额外的输出,你可以连接到最大解池化层:
“指标”
—每个分区的最大索引值。“大小”
-输入特征图的大小。
为了允许输出到最大解池层,最大池层的池化区域必须是不重叠的。
有关如何解除最大池化层的输出池的详细信息,请参见maxUnpooling2dLayer
。
数据类型:细胞
例子
用不重叠的池化区域创建最大池化层
创建一个不重叠池化区域的最大池化层。
layer = maxPooling2dLayer(2,“步”,2)
layer = MaxPooling2DLayer with properties: Name: " HasUnpoolingOutputs: 0 NumOutputs: 1 OutputNames: {'out'} Hyperparameters PoolSize: [2 2] Stride: [2 2] PaddingMode: 'manual' PaddingSize: [0 0 0 0]
矩形区域的高度和宽度(池大小)都是2。池化区域不会重叠,因为垂直和水平遍历图像的步长(stride)也是(2 - 2)
。
包含一个具有非重叠区域的最大池化层层
数组中。
图层= […imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,“步”,2) fulllyconnectedlayer (10) softmaxLayer classificationLayer]
layers = 7x1 Layer array with layers: 1 " Image Input 28x28x1图像,'zerocenter'归一化2 " Convolution 20个5x5个卷积,stride[1 1]和padding [0 0 0 0] 3 " ReLU ReLU 4 " Max Pooling 2x2 Max Pooling, stride[2 2]和padding [0 0 0 0] 5 " Fully Connected 10 " Softmax Softmax 7 " Classification Output crossentropyex
创建具有重叠池区域的最大池化层
创建一个具有重叠池区域的最大池化层。
layer = maxPooling2dLayer([32],“步”,2)
layer = MaxPooling2DLayer with properties: Name: " HasUnpoolingOutputs: 0 NumOutputs: 1 OutputNames: {'out'} Hyperparameters PoolSize: [32 2] Stride: [2 2] PaddingMode: 'manual' PaddingSize: [0 0 0 0]
这一层创建大小为[32]的池化区域,并取每个区域中6个元素的最大值。池化区域重叠是因为存在跨步维度步
小于各自的池化维度PoolSize
。
在a中包含一个具有重叠池化区域的最大池化层层
数组中。
图层= […imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer([32 2],“步”,2) fulllyconnectedlayer (10) softmaxLayer classificationLayer]
layers = 7x1 Layer array with layers: 1 " Image Input 28x28x1图像,'zerocenter'归一化2 " Convolution 20 5x5卷积,stride[1 1]和padding [0 0 0 0] 3 " ReLU ReLU 4 " Max Pooling 3x2 Max Pooling, stride[2 2]和padding [0 0 0 0] 5 " Fully Connected 10 " Softmax Softmax 7 " Classification Output crossentropyex
更多关于
最大池化层
二维最大池化层通过将输入划分为矩形池化区域来执行下采样,然后计算每个区域的最大值。
池化层跟随卷积层进行下采样,因此减少了与以下层的连接数量。它们本身不进行任何学习,但减少了在接下来的层中需要学习的参数数量。它们还有助于减少过度拟合。
最大池化层返回其输入的矩形区域的最大值。矩形区域的大小由poolSize
的观点maxPoolingLayer
。例如,如果poolSize
=(2、3)
,则该层返回高度为2,宽度为3的区域的最大值。
池化层水平和垂直扫描输入,步长可以使用“步”
名称-值对参数。如果池大小小于或等于步幅,则池化区域不会重叠。
对于非重叠区域(池大小和步相等),如果池化层的输入是n——- - - - - -n,池化区域大小为h——- - - - - -h,然后池化层对区域进行下采样h[1]。也就是说,对于卷积层的一个通道,最大或平均池化层的输出为n/h——- - - - - -n/h。对于重叠区域,池化层的输出为(输入的大小- - - - - -池大小+ 2 *填充)/步+ 1。
参考文献
[1] Nagi, J., F. Ducatelle, G. A. Di Caro, D. Ciresan, U. Meier, A. Giusti, F. Nagi, J. Schmidhuber, L. M. Gambardella。基于视觉的手势识别的最大池卷积神经网络IEEE信号与图像处理应用国际会议(ICSIPA2011), 2011年。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
如果在一个内核窗口的非对角线上存在相等的最大值,则在maxPooling2dLayer
可能会导致MATLAB之间的数值不匹配®以及生成的代码。这个问题还会导致每个池区域的最大值索引不匹配。
例如,考虑以下输入到maxPooling2dLayer
。MATLAB的输出如下所示。
对于相同的输入,将显示生成的代码的输出。
GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。
使用注意事项和限制:
如果在一个内核窗口的非对角线上存在相等的最大值,则在maxPooling2dLayer
可能会导致MATLAB和生成的代码之间的数值不匹配。这个问题还会导致每个池区域的最大值索引不匹配。
例如,考虑以下输入到maxPooling2dLayer
。MATLAB的输出如下所示。
对于相同的输入,将显示生成的代码的输出。
版本历史
第一MATLAB
在MATLAB中编写了一种常用的求解方法:
Esegui将在MATLAB中执行编译。I浏览器网页不支持命令MATLAB。金宝app
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。