PoolingLayer[sz]
用尺寸为 sz 的内核表示池化网层.
PoolingLayer[{w}]
表示内核尺寸为 w 且执行一维池化的层.
PoolingLayer[{h,w}]
表示内核尺寸为 h×w 且执行二维池化的层.
PoolingLayer[{h,w,d}]
表示内核尺寸为 h×w×d 且执行三维池化的层.
PoolingLayer[kernel,stride]
表示使用 stride 作为内核应用之间步长的层.
PoolingLayer[kernel,opts]
包括其它池化方法、填充及其它参数的选项.
PoolingLayer
PoolingLayer[sz]
用尺寸为 sz 的内核表示池化网层.
PoolingLayer[{w}]
表示内核尺寸为 w 且执行一维池化的层.
PoolingLayer[{h,w}]
表示内核尺寸为 h×w 且执行二维池化的层.
PoolingLayer[{h,w,d}]
表示内核尺寸为 h×w×d 且执行三维池化的层.
PoolingLayer[kernel,stride]
表示使用 stride 作为内核应用之间步长的层.
PoolingLayer[kernel,opts]
包括其它池化方法、填充及其它参数的选项.
更多信息和选项
- PoolingLayer[n,…] 表示这样一个层,当应用于带有 c 个输入通道和一个或多个空间维度的输入数组时,在空间维度上执行 c 个不同的池化操作以产生具有 c 个通道的输出数组.
- PoolingLayer[n] 等价于 PoolingLayer[n,1].
- 可以包括下列可选参数:
-
"Dimensionality" Automatic 池化的空间维数 "Function" Max 使用的聚合函数 Interleaving False 通道维度的位置 PaddingSize 0 加在输入中的零填充的数量 - 在设置 InterleavingFalse 下,通道维度被视为输入和输出数组的第一个维度.
- 在设置 InterleavingTrue 下,通道维度被视为输入和输出数组的最后一个维度.
- kernel 和 stride 的设置可以是下列形式:
-
n 对所有维度使用值 n {…,ni,…} 对第 i
值 ni - PaddingSize 的设置可以是以下格式:
-
n 在开头和结尾用 n 个零填充每个维度 {n1,n2,…} 在开头和结尾用 n 个零填充第 i
个维度{{n1,m1},{n2,m2},…} 在开头用 ni 个零,在结尾用 mi 个零填充第 i
个维度"Same" 填充每个维度使得输出尺寸等于输入尺寸除以步幅(向上舍入) - PoolingLayer[…][input] 根据应用层显式计算输出.
- PoolingLayer[…][{input1,input2,…}] 显式计算每个 inputi 的输出.
- 当 NumericArray 作为输入时,输出将是 NumericArray.
- PoolingLayer 常常用在 NetChain、NetGraph 等中.
- NetExtract 可用于从 PoolingLayer 对象提取参数值.
- PoolingLayer 开放下列端口,以便用于 NetGraph 等:
-
"Input" 阶为 2、3 或 4 的数组 "Output" 阶为 2、3 或 4 的数组 - PoolingLayer 可以作用在包含 "Varying" 维度的数组上.
- "Function" 选项的可能的显式设置包括:
-
Max 所用的最大值 Mean 所用的平均值 Total 所用的值的总和 - 在较大的网络中,如果不能从其他层推导得出,可以使用选项 "Input"->{d1,…,dn} 来确定 PoolingLayer 的输入维度.
- 给出维度为 d1×…×di×… 的输入数组,输出数组维度为
×…×
×…,其中通道维数保持未变(例如,d1=
)并且空间维度的大小根据
进行变换,其中,
/
是轴的起点/端点的填充大小,
是内核大小,
是每个维度的步幅大小. - Options[PoolingLayer] 给出构建网络层的默认选项的列表. Options[PoolingLayer[…]] 给出在一些数据上运行网络层的默认选项列表.
- Information[PoolingLayer[…]] 给出关于该网络层的报告.
- Information[PoolingLayer[…],prop] 给出 PoolingLayer[…] 的属性 prop 的值. 可能的属性与 NetGraph 相同.
范例
打开所有单元 关闭所有单元基本范例 (2)
创建内核尺寸为 5×5 的 PoolingLayer:
PoolingLayer[{5, 5}]创建一维 PoolingLayer:
pool = PoolingLayer[{2}]pool[{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}]//MatrixForm范围 (5)
创建具有 4 步幅的一维 PoolingLayer,并将其应用于输入:
pool = PoolingLayer[3, {4}, "Function" -> Mean]pool[{Range[20]}]Create a PoolingLayer with kernel size 2:
pool = PoolingLayer[2]pool[{{{1, 3, 0}, {0, 0, 1}, {-2, 1, 0}}}]创建具有非对称步长的二维 PoolingLayer,并将其应用于输入:
pool = PoolingLayer[3, {2, 3}]pool[RandomReal[1, {3, 4, 4}]]创建二维 PoolingLayer,接受一个图像,并返回一个图像:
pool = PoolingLayer[16, "Input" -> NetEncoder["Image"], "Output" -> NetDecoder["Image"]]pool[[image]]pool[{[image], [image]}]创建一个具有非对称内核的三维 PoolingLayer,并将其应用于输入:
pool = PoolingLayer[{2, 5, 3}]pool[RandomReal[1, {2, 5, 5, 5}]]选项 (6)
"Function" (2)
data = {{1, 2, 3}};
AssociationMap[PoolingLayer[{3}, "Function" -> #]@data&, {Max, Total, Mean}]imgs = {[image], [image]};Grid@Map[
Prepend[#]@PoolingLayer[16, "Function" -> #, "Input" -> NetEncoder["Image"], "Output" -> NetDecoder["Image"]]@imgs&, {Max, Mean, Total}]Interleaving (1)
创建具有一个输入通道的 PoolingLayer,并且 InterleavingFalse :
PoolingLayer[2, "Input" -> {1, 25, 25}, Interleaving -> False]创建具有一个输入通道的 PoolingLayer,并且 InterleavingTrue:
PoolingLayer[2, "Input" -> {25, 25, 1}, Interleaving -> True]PaddingSize (3)
创建一个二维 PoolingLayer,在每边用 10 个零填充第一维,每边用 12 个零填充第二维:
pool = PoolingLayer[15, PaddingSize -> {10, 12}, "Input" -> NetEncoder["Image"], "Output" -> NetDecoder["Image"]]pool[[image]]创建二维 PoolingLayer,在开始用 10 个零,在结尾用 14 个零填充第一维:
pool = PoolingLayer[15, PaddingSize -> {{10, 14}, {0, 0}}, "Input" -> NetEncoder["Image"], "Output" -> NetDecoder["Image"]]pool[[image]]pool = PoolingLayer[5, "Input" -> {1, 25, 25}, PaddingSize -> 2 ]pool[["Input"]] == pool[["Output"]]属性和关系 (2)
outputSize[inputSize_List, kern_, stride_, pad_] :=
Floor[(inputSize + 2 * pad - kern) / stride] + 1输入维度为 {256,252} 的输出维度,其中内核尺寸为 3,步幅为 2,填充尺寸为 2:
outputSize[{256, 252}, 3, 2, 2]这与用相同参数定义 PoolingLayer 一致
PoolingLayer[3, 2, PaddingSize -> 2, "Input" -> {3, 256, 252}]增大步幅会减少 PoolingLayer 的运算时间:
data = RandomReal[1, {3, 400, 400}];
PoolingLayer[50, 1][data];//AbsoluteTiming
PoolingLayer[50, 5][data];//AbsoluteTiming技术笔记
相关指南
-
▪
- 神经网络层
文本
Wolfram Research (2016),PoolingLayer,Wolfram 语言函数,https://reference.wolfram.com/language/ref/PoolingLayer.html (更新于 2021 年).
CMS
Wolfram 语言. 2016. "PoolingLayer." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/PoolingLayer.html.
APA
Wolfram 语言. (2016). PoolingLayer. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/PoolingLayer.html 年
BibTeX
@misc{reference.wolfram_2026_poolinglayer, author="Wolfram Research", title="{PoolingLayer}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/PoolingLayer.html}", note=[Accessed: 05-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_poolinglayer, organization={Wolfram Research}, title={PoolingLayer}, year={2021}, url={https://reference.wolfram.com/language/ref/PoolingLayer.html}, note=[Accessed: 05-August-2026]}