maxPooling2dLayer
马克斯池层
描述
二维最大池化层通过将输入划分为矩形池化区域,然后计算每个区域的最大值来执行下采样。
创建
描述
创建一个最大池化层并设置层
= maxPooling2dLayer (poolSize
)PoolSize
财产。
设置可选层
= maxPooling2dLayer (poolSize
,名称,值
)步
,的名字
,HasUnpoolingOutputs
使用名称-值对的属性。方法指定输入填充“填充”
名称-值对的论点。例如,maxPooling2dLayer(2步,3)
创建一个最大池大小的池层(2 - 2)
和步[3 3]
.可以指定多个名称-值对。将每个属性名用单引号括起来。
输入参数
使用逗号分隔的名称-值对参数指定沿层输入的边缘添加的填充大小,并设置步
,的名字
,HasUnpoolingOutputs
属性。名字用单引号括起来。
例子:maxPooling2dLayer(2步,3)
创建一个最大池大小的池层(2 - 2)
和步[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)。
属性
马克斯池
PoolSize
- - - - - -池化区域尺寸
两个正整数的向量
池化区域的维度,指定为两个正整数的向量[w h]
,在那里h
是高度和w
是宽度。在创建层时,您可以指定PoolSize
作为标量,对两个维度使用相同的值。
如果步幅尺寸步
小于各自的池维度,则池区域重叠。
填充的维度PaddingSize
必须小于池化区域尺寸PoolSize
.
例子:(2 - 1)
指定高度为2,宽度为1的池区域。
步
- - - - - -遍历输入的步长
[1]
(默认)|两个正整数的向量
用于垂直和水平遍历输入的步长,指定为两个正整数的向量[b]
,在那里一个
竖直步长和b
是水平步长。在创建层时,您可以指定步
作为标量,对两个维度使用相同的值。
如果步幅尺寸步
小于各自的池维度,则池区域重叠。
填充的维度PaddingSize
必须小于池化区域尺寸PoolSize
.
例子:3 [2]
指定垂直步长为2,水平步长为3。
PaddingSize
- - - - - -大小的填充
[0 0 0 0]
(默认)|四个非负整数的向量
应用于输入边框的填充大小,指定为向量[t b l r]
四个非负整数的t
是填充到顶部,b
是填充到底部,l
填充是应用到左边,和r
是应用到右侧的填充。
创建图层时,使用“填充”
参数指定填充大小。
例子:[1 1 2 2]
在顶部和底部添加一行填充,在输入的左侧和右侧添加两列填充。
PaddingMode
- - - - - -方法来确定填充大小
“手动”
(默认)|“相同”
方法来确定填充大小,指定为“手动”
或“相同”
.
软件会自动设置PaddingMode
基于“填充”
创建层时指定的值。
如果你设置
“填充”
选项设置为标量或非负整数的向量,然后软件自动设置PaddingMode
来“手动”
.如果你设置
“填充”
选项“相同”
,然后软件自动设置PaddingMode
来“相同”
并在训练时计算填充的大小,以便当步幅为1时输出与输入的大小相同。如果stride大于1,则输出大小为装天花板(inputSize /步)
,在那里inputSize
是输入的高度还是宽度步
是对应维度中的步幅。如果可能的话,软件会在顶部和底部,以及左侧和右侧添加相同数量的填充。如果必须垂直添加的填充有一个奇数值,那么软件将在底部添加额外的填充。如果必须水平添加的填充有一个奇数值,那么软件将在右侧添加额外的填充。
填充
- - - - - -大小的填充
[0 0]
(默认)|两个非负整数的向量
请注意
填充
属性将在未来的版本中删除。使用PaddingSize
代替。创建图层时,使用“填充”
参数指定填充大小。
应用于垂直和水平输入边框的填充大小,指定为向量[b]
两个非负整数的一个
是否将填充应用到输入数据的顶部和底部b
是应用到左边和右边的填充。
例子:[1]
在顶部和底部添加一行填充,在输入的左侧和右侧添加一列填充。
HasUnpoolingOutputs
- - - - - -输出到解池层的标志
假
(默认)|真正的
标志,用于输出到非池化层,指定为真正的
或假
.
如果HasUnpoolingOutputs
值=假
,那么Max池化层有一个带有名称的输出“出”
.
若要使用最大池化层的输出作为最大非池化层的输入,请设置HasUnpoolingOutputs
价值真正的
.在这种情况下,最大池化层有两个额外的输出,你可以连接到最大非池化层:
“指标”
—各池区域的最大值索引。“大小”
-输入特征映射的大小。
为了使输出能够到最大非池化层,最大池化层的池化区域必须不重叠。
有关如何取消最大池化层的输出池化的更多信息,请参见maxUnpooling2dLayer
.
层
的名字
- - - - - -层的名字
”
(默认)|特征向量|字符串标量
层名,指定为字符向量或字符串标量。为层
数组输入,trainNetwork
,assembleNetwork
,layerGraph
,dlnetwork
函数自动为具有此名称的层分配名称”
.
数据类型:字符
|字符串
NumInputs
- - - - - -输入数量
1
(默认)
此属性是只读的。
层的输入数。该层只接受单个输入。
数据类型:双
InputNames
- - - - - -输入名字
{'在'}
(默认)
此属性是只读的。
输入图层名称。该层只接受单个输入。
数据类型:细胞
NumOutputs
- - - - - -数量的输出
1(默认)|3.
层的输出数量。
如果HasUnpoolingOutputs
值=假
,那么Max池化层有一个带有名称的输出“出”
.
若要使用最大池化层的输出作为最大非池化层的输入,请设置HasUnpoolingOutputs
价值真正的
.在这种情况下,最大池化层有两个额外的输出,你可以连接到最大非池化层:
“指标”
—各池区域的最大值索引。“大小”
-输入特征映射的大小。
为了使输出能够到最大非池化层,最大池化层的池化区域必须不重叠。
有关如何取消最大池化层的输出池化的更多信息,请参见maxUnpooling2dLayer
.
数据类型:双
OutputNames
- - - - - -输出的名字
{“出”}
(默认)|{“了”、“指数”,“大小”}
输出层的名称。
如果HasUnpoolingOutputs
值=假
,那么Max池化层有一个带有名称的输出“出”
.
若要使用最大池化层的输出作为最大非池化层的输入,请设置HasUnpoolingOutputs
价值真正的
.在这种情况下,最大池化层有两个额外的输出,你可以连接到最大非池化层:
“指标”
—各池区域的最大值索引。“大小”
-输入特征映射的大小。
为了使输出能够到最大非池化层,最大池化层的池化区域必须不重叠。
有关如何取消最大池化层的输出池化的更多信息,请参见maxUnpooling2dLayer
.
数据类型:细胞
例子
创建最大池化层与非重叠池化区域
创建一个最大池化层,池化区域不重叠。
层= 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。池化区域不会重叠,因为垂直和水平遍历图像的步长(步幅)也相同(2 - 2)
.
包含一个最大池化层与非重叠区域层
数组中。
层= [...imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,“步”2) fullyConnectedLayer(10) softmaxLayer classificationLayer]
2”二维卷积20 5x5卷积与步幅[1 1]和填充[0 0 0 0]3”ReLU ReLU 4”二维最大池化2x2最大池化与步幅[2 2]和填充[0 0 0 0]5”全连接10全连接层6”Softmax Softmax 7”分类输出crossentropyex
创建最大池化层与重叠池化区域
用重叠的池化区域创建最大池化层。
layer = maxPooling2dLayer([3 2],“步”,2)
layer = MaxPooling2DLayer with properties: Name: " HasUnpoolingOutputs: 0 NumOutputs: 1 OutputNames: {'out'} Hyperparameters PoolSize: [3 2] Stride: [2 2] PaddingMode: 'manual' PaddingSize: [0 0 0 0]
这一层创建大小为[32 2]的池化区域,并取每个区域中六个元素的最大值。池化区域重叠是因为有步幅尺寸步
它们小于各自的池维度PoolSize
.
包含一个具有重叠池区域的最大池化层层
数组中。
层= [...imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer([3 2],“步”2) fullyConnectedLayer(10) softmaxLayer classificationLayer]
2”二维卷积20 5x5卷积与步幅[1 1]和填充[0 0 0 0]3”ReLU ReLU 4”二维最大池化3x2最大池化与步幅[2 2]和填充[0 0 0 0]5”全连接10全连接层6”Softmax Softmax 7”分类输出crossentropyex
算法
二维最大池化层
二维最大池化层通过将输入划分为矩形池化区域,然后计算每个区域的最大值来执行下采样。
图层池的尺寸取决于图层输入:
对于二维图像输入(四维数据,对应于两个空间维度的像素、通道和观测),层聚集在空间维度上。
对于二维图像序列输入(五个维度的数据对应于两个空间维度的像素,通道,观察和时间步长),层聚集在空间维度上。
对于一维图像序列输入(四维数据,对应于一个空间维度的像素、通道、观测和时间步长),层在空间和时间维度上聚集。
图层输入和输出格式
层数组或层图中的层将数据以格式化的方式传递给后续层dlarray
对象。的格式dlarray
对象是一个字符字符串,其中每个字符描述数据的相应维度。格式由以下一个或多个字符组成:
“S”
——空间“C”
——频道“B”
——批“T”
——时间“U”
——未指明的
例如,用4-D数组表示的二维图像数据,其中前两个维度对应图像的空间维度,第三个维度对应图像的通道,第四个维度对应批处理维度,可以描述为具有格式“SSCB”
(空间,空间,渠道,批处理)。
你可以与它们交互dlarray
对象在自动区分工作流程中,如开发自定义层,使用functionLayer
对象,或者使用向前
而且预测
功能与dlnetwork
对象。
的支持的输入格式MaxPooling2DLayer
对象和相应的输出格式。如果将层的输出传递给不继承自的自定义层nnet.layer.Formattable
类,或FunctionLayer
对象的Formattable
选项设置为假
,则该层接收到一个未格式化的dlarray
对象,其维度顺序与该表中概述的格式相对应。
输入格式 | 输出格式 |
---|---|
|
|
|
|
|
|
参考文献
[1]纳吉,J., F. Ducatelle, G. A. Di Caro, D. Ciresan, U. Meier, A. Giusti, F.纳吉,J. Schmidhuber, L. M. Gambardella。“基于视觉手势识别的最大池卷积神经网络”。信号与图像处理应用国际会议(ICSIPA2011), 2011年。
扩展功能
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
如果在内核窗口的非对角线上存在相同的最大值,则maxPooling2dLayer
可能会导致MATLAB之间的数值不匹配®以及生成的代码。此问题还会导致每个池区域中最大值的索引不匹配。
例如,考虑以下输入maxPooling2dLayer
.给出了MATLAB的输出结果。
对于相同的输入,将显示生成代码的输出。
GPU的代码生成
使用GPU Coder™为NVIDIA GPU生成CUDA®代码。
使用注意事项和限制:
如果在内核窗口的非对角线上存在相同的最大值,则maxPooling2dLayer
可能会导致MATLAB和生成代码之间的数值不匹配。此问题还会导致每个池区域中最大值的索引不匹配。
例如,考虑以下输入maxPooling2dLayer
.给出了MATLAB的输出结果。
对于相同的输入,将显示生成代码的输出。
版本历史
介绍了R2016a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。