# maxPooling2dLayer
二维最大池化层
函数库: TyDeepLearning
# 语法
layer = maxPooling2dLayer(PoolSize=1; Stride=1, PaddingMode="valid")
# 说明
layer = maxPooling2dLayer(PoolSize=1; Stride=1, PaddingMode="valid")创建一个二维最大池化层。示例
对输入的多维数据进行二维平面上的最大池化运算。
通常,输入的 shape 为 PoolSize 为 Stride ,公式定义如下:
# 示例
创建二维最大池化层
创建一个维度为(1,2,4,4)、元素在(0,10)之间的数组。
using TyDeepLearning
set_backend(:mindspore)
array = 10 * rand(Float32, (1, 2, 4, 4))
创建一个二维最大池化层,池化核大小为 3。 使用该层处理数组并输出结果维度。
layer = maxPooling2dLayer(3)
print(size(TyDeepLearning.predict(layer, array)))
(1, 2, 2, 2)
创建具有非重叠池化区域的二维最大池化层
创建具有非重叠池化区域的二维最大池化层,池化核大小为 2,步长为 2。
using TyDeepLearning
set_backend(:mindspore)
layer = maxPooling2dLayer(2; Stride = 2)
随机生成一个维度为(1,1,28,28)的数组。
input = rand(Float32, (1, 1, 28, 28))
创建一个包含具有非重叠池化区域的二维最大池化层的神经网络。 使用该神经网络处理数组并输出结果维度。
layers = SequentialCell([
convolution2dLayer(1, 20, 5),
reluLayer(),
maxPooling2dLayer(2; Stride = 2),
flattenLayer(),
fullyConnectedLayer(20 * 14 * 14, 10),
softmaxLayer()
])
print(size(TyDeepLearning.predict(layers, input)))
(1, 10)
创建具有重叠池化区域的二维最大池化层
创建一个具有重叠池化区域的二维最大池化层,池化核大小为(3,2),步长为 2。
using TyDeepLearning
set_backend(:mindspore)
layer = maxPooling2dLayer((3, 2); Stride = 2)
随机生成一个维度为(1,1,28,28)的数组。
input = rand(Float32, (1, 1, 28, 28))
创建一个包含具有重叠池化区域的二维最大池化层的神经网络。 使用该神经网络处理数组并输出结果维度。
layers = SequentialCell([
convolution2dLayer(1, 20, 5),
reluLayer(),
maxPooling2dLayer((3, 2); Stride = 2),
flattenLayer(),
fullyConnectedLayer(20 * 13 * 14, 10),
softmaxLayer()
])
print(size(TyDeepLearning.predict(layers, input)))
(1, 10)
# 输入参数
PoolSize-池化核尺寸向量|标量
指定池化核尺寸大小。如果为整数,则代表池化核的高和宽。如果为 Tuple,其值必须包含两个整数值分别表示池化核的高和宽。默认值:1。
数据类型: Int64
Stride-步长向量|标量
池化操作的移动步长,如果为整数,则代表池化核的高和宽方向的移动步长。如果为 Tuple,其值必须包含两个整数值分别表示池化核的高和宽的移动步长。默认值:1。
数据类型: Int64
PaddingMode-填充模式字符串
指定填充模式。可选值为 “same”,”valid”,”pad”。默认值:”same”。
same:输出的宽度与输入整除
Stride后的值相同。valid:在不填充的前提下返回有效计算所得的输出。不满足计算的多余像素会被丢弃。
数据类型: string
# 输出参数
layer-二维最大池化层网络对象
输出为一个二维最大池化层
# 另请参阅
SequentialCell | convolution2dLayer | flattenLayer | fullyConnectedLayer | softmaxLayer | predict