主要内容

maxPooling2dLayer

最大池化层

描述

二维最大池化层通过将输入划分为矩形池化区域来执行下采样,然后计算每个区域的最大值。

创建

描述

= maxPooling2dLayer (poolSize创建一个最大池层并设置PoolSize财产。

例子

= maxPooling2dLayer (poolSize名称,值设置可选的名字,HasUnpoolingOutputs使用名称-值对的属性。要指定输入填充,使用“填充”名称-值对参数。例如,maxPooling2dLayer(2步,3)创建一个带有池大小的最大池层(2 - 2)和步[3 3]。可以指定多个名称-值对。将每个属性名称用单引号括起来。

输入参数

全部展开

名称-值参数

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

例子:maxPooling2dLayer(2步,3)创建一个带有池大小的最大池层(2 - 2)和步[3 3]

输入边缘填充,指定为由逗号分隔的对“填充”其中一个值是:

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

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

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

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

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

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

属性

全部展开

马克斯池

池化区域的维度,指定为两个正整数的向量[w h],在那里h是高度和w是宽度。在创建图层时,您可以指定PoolSize作为标量,以便在两个维度上使用相同的值。

如果跨步尺寸小于各自的池化维度,则池化区域重叠。

填充尺寸PaddingSize必须小于池化区域的尺寸PoolSize

例子:(2 - 1)指定高度为2,宽度为1的池化区域。

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

如果跨步尺寸小于各自的池化维度,则池化区域重叠。

填充尺寸PaddingSize必须小于池化区域的尺寸PoolSize

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

应用于输入边框的填充大小,指定为矢量[au:]四个非负整数,其中t是应用于顶部的填充,b是应用于底部的填充,l填充是否应用于左侧,和r是应用于右侧的填充。

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

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

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

的值由软件自动设置PaddingMode基于“填充”创建图层时指定的值。

  • 如果你设置“填充”选项为标量或非负整数向量,则软件自动设置PaddingMode“手动”

  • 如果你设置“填充”选项“相同”,则软件自动设置PaddingMode“相同”并计算训练时填充的大小,以便当步幅等于1时,输出与输入具有相同的大小。如果步幅大于1,则输出大小为装天花板(inputSize /步),在那里inputSize是输入和的高度还是宽度是相应维度中的步幅。如果可能的话,软件会在顶部和底部以及左侧和右侧添加相同数量的填充。如果必须垂直添加的填充值为奇数,则软件会在底部添加额外的填充。如果必须横向添加的填充值为奇数,则软件会在右侧添加额外的填充。

请注意

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

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

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

输出到解池层的标志,指定为真正的

如果HasUnpoolingOutputs值=,则最大池化层有一个名称为“出”

要使用最大池化层的输出作为最大解池化层的输入,请设置HasUnpoolingOutputs价值真正的。在这种情况下,最大池化层有两个额外的输出,你可以连接到最大解池化层:

  • “指标”—每个分区的最大索引值。

  • “大小”-输入特征图的大小。

为了允许输出到最大解池层,最大池层的池化区域必须是不重叠的。

有关如何解除最大池化层的输出池的详细信息,请参见maxUnpooling2dLayer

图层名称,指定为字符向量或字符串标量。为数组输入trainNetworkassembleNetworklayerGraph,dlnetwork函数会自动给有名称的图层分配名称

数据类型:字符|字符串

该属性是只读的。

层的输入数。这一层只接受一个输入。

数据类型:

该属性是只读的。

输入图层的名称。这一层只接受一个输入。

数据类型:细胞

层的输出数。

如果HasUnpoolingOutputs值=,则最大池化层有一个名称为“出”

要使用最大池化层的输出作为最大解池化层的输入,请设置HasUnpoolingOutputs价值真正的。在这种情况下,最大池化层有两个额外的输出,你可以连接到最大解池化层:

  • “指标”—每个分区的最大索引值。

  • “大小”-输入特征图的大小。

为了允许输出到最大解池层,最大池层的池化区域必须是不重叠的。

有关如何解除最大池化层的输出池的详细信息,请参见maxUnpooling2dLayer

数据类型:

输出图层的名称。

如果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

更多关于

全部展开

参考文献

[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年。

扩展功能

版本历史

在R2016a中引入