最大池化

MaxPool - 22

版本

  • 名称: MaxPool (GitHub)

  • 域名: main

  • since_version: 22

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本22起可用。

摘要

MaxPool 消耗一个输入张量 X 并根据核大小、步幅大小和填充长度在张量上应用最大池化。最大池化包括根据核大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量 Y 中以进行进一步处理。输出空间形状的计算方式不同,取决于是否使用显式填充(其中使用 pads)或自动填充(其中使用 auto_pad)。使用显式填充时(https://pytorch.org/docs/stable/generated/torch.nn.MaxPool2d.html?highlight=maxpool#torch.nn.MaxPool2d):

output_spatial_shape[i] = floor((input_spatial_shape[i] + pad_shape[i] - dilation[i] * (kernel_shape[i] - 1) - 1) / strides_spatial_shape[i] + 1)

output_spatial_shape[i] = ceil((input_spatial_shape[i] + pad_shape[i] - dilation[i] * (kernel_shape[i] - 1) - 1) / strides_spatial_shape[i] + 1)

如果启用了ceil_mode。pad_shape[i] 是沿轴 i 的填充总和。将忽略在右侧填充区域开始的滑动窗口。

auto_pad 是一个已弃用的属性。如果您当前正在使用它们,当启用 ceil_mode 时,输出的空间形状将如下所示:

VALID: output_spatial_shape[i] = ceil((input_spatial_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1) + 1) / strides_spatial_shape[i])
SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = ceil(input_spatial_shape[i] / strides_spatial_shape[i])

或者当ceil_mode被禁用时 (https://www.tensorflow.org/api_docs/python/tf/keras/layers/AveragePooling2D):

VALID: output_spatial_shape[i] = floor((input_spatial_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1)) / strides_spatial_shape[i]) + 1
SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = floor((input_spatial_shape[i] - 1) / strides_spatial_shape[i]) + 1

如果SAME_UPPERSAME_LOWER,填充形状将如下所示:

pad_shape[i] = (output_spatial_shape[i] - 1) * strides_spatial_shape[i] + ((kernel_spatial_shape[i] - 1) * dilations[i] + 1) - input_spatial_shape[i]

每个池化窗口的输出是排除填充的最大元素数。

属性

  • auto_pad - STRING (默认为 'NOTSET'):

    auto_pad 必须是 NOTSET、SAME_UPPER、SAME_LOWER 或 VALID 中的一个。默认值为 NOTSET,表示使用显式填充。SAME_UPPER 或 SAME_LOWER 表示填充输入,使得 output_shape[i] = ceil(input_shape[i] / strides[i]) 对于每个轴 i。填充在两侧均匀或几乎均匀地分配(取决于它是偶数还是奇数)。如果填充是奇数,额外的填充在 SAME_UPPER 的情况下添加到末尾,在 SAME_LOWER 的情况下添加到开头。

  • ceil_mode - INT(默认为 '0'):

    是否使用ceil或floor(默认)来计算输出形状。

  • dilations - INTS :

    沿着滤波器每个空间轴的膨胀值。如果未指定,则默认每个空间轴的膨胀值为1。

  • kernel_shape - INTS(必需):

    沿每个轴的核大小。

  • pads - INTS :

    沿每个空间轴的开始和结束的填充,它可以取任何大于或等于0的值。该值表示在相应轴的开始和结束部分添加的像素数。pads格式应如下所示 [x1_begin, x2_begin…x1_end, x2_end,…],其中xi_begin表示在轴i的开始部分添加的像素数,xi_end表示在轴i的结束部分添加的像素数。此属性不能与auto_pad属性同时使用。如果未指定,则沿每个空间轴的开始和结束的填充默认为0。

  • storage_order - INT (默认为 '0'):

    张量的存储顺序。0表示行优先,1表示列优先。此属性仅用于将n元组索引值转换为单个整数值,以生成第二个输出。

  • 步幅 - 整数 :

    沿每个空间轴的步幅。如果未指定,则沿每个空间轴的步幅默认为1。

输入

  • X (异构) - T:

    来自前一个操作符的输入数据张量;对于图像情况,维度为(N x C x H x W),其中N是批量大小,C是通道数,H和W是数据的高度和宽度。对于非图像情况,维度形式为(N x C x D1 x D2 … Dn),其中N是批量大小。可选地,如果维度符号有效,操作期望输入数据张量带有维度符号[DATA_BATCH, DATA_CHANNEL, DATA_FEATURE, DATA_FEATURE …]。

输出

在1和2之间输出。

  • Y (异构) - T:

    从输入张量的平均或最大池化中输出数据张量。维度将根据不同的核、步幅和填充大小而变化。使用维度的地板值

  • 索引 (可选, 异构) - I:

    从输入张量的最大池化中得到的索引张量。索引的维度与输出张量相同。索引中的值是池化过程中所选值的索引。索引被计算为扁平化的1维张量,并且索引不考虑填充。因此,索引中的值在[0, N x C x D1 x … x Dn)范围内。

类型约束

  • T 在 ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16), tensor(int8), tensor(uint8) ):

    将输入和输出类型限制为浮点数和8位张量。

  • I 在 ( tensor(int64) ) 中:

    将索引张量限制为int64

MaxPool - 12

版本

  • 名称: MaxPool (GitHub)

  • 域名: main

  • since_version: 12

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本12起可用。

摘要

MaxPool 消耗一个输入张量 X,并根据核大小、步幅大小和填充长度在张量上应用最大池化。最大池化包括根据核大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量 Y 中以进行进一步处理。输出空间形状的计算方式不同,取决于是否使用显式填充(其中使用 pads)或自动填充(其中使用 auto_pad)。使用显式填充时(https://pytorch.org/docs/stable/generated/torch.nn.MaxPool2d.html?highlight=maxpool#torch.nn.MaxPool2d):

output_spatial_shape[i] = floor((input_spatial_shape[i] + pad_shape[i] - dilation[i] * (kernel_shape[i] - 1) - 1) / strides_spatial_shape[i] + 1)

output_spatial_shape[i] = ceil((input_spatial_shape[i] + pad_shape[i] - dilation[i] * (kernel_shape[i] - 1) - 1) / strides_spatial_shape[i] + 1)

如果启用了ceil_mode。pad_shape[i] 是沿轴 i 的填充总和。

auto_pad 是一个已弃用的属性。如果您当前正在使用它们,当启用 ceil_mode 时,输出的空间形状将如下所示:

VALID: output_spatial_shape[i] = ceil((input_spatial_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1) + 1) / strides_spatial_shape[i])
SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = ceil(input_spatial_shape[i] / strides_spatial_shape[i])

或者当ceil_mode被禁用时 (https://www.tensorflow.org/api_docs/python/tf/keras/layers/AveragePooling2D):

VALID: output_spatial_shape[i] = floor((input_spatial_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1)) / strides_spatial_shape[i]) + 1
SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = floor((input_spatial_shape[i] - 1) / strides_spatial_shape[i]) + 1

如果SAME_UPPERSAME_LOWER,填充形状将如下所示:

pad_shape[i] = (output_spatial_shape[i] - 1) * strides_spatial_shape[i] + ((kernel_spatial_shape[i] - 1) * dilations[i] + 1) - input_spatial_shape[i]

每个池化窗口的输出是排除填充的最大元素数。

属性

  • auto_pad - STRING (默认为 'NOTSET'):

    auto_pad 必须是 NOTSET、SAME_UPPER、SAME_LOWER 或 VALID 中的一个。默认值为 NOTSET,表示使用显式填充。SAME_UPPER 或 SAME_LOWER 表示填充输入,使得 output_shape[i] = ceil(input_shape[i] / strides[i]) 对于每个轴 i。填充在两侧均匀或几乎均匀地分配(取决于它是偶数还是奇数)。如果填充是奇数,额外的填充在 SAME_UPPER 的情况下添加到末尾,在 SAME_LOWER 的情况下添加到开头。

  • ceil_mode - INT(默认为 '0'):

    是否使用ceil或floor(默认)来计算输出形状。

  • dilations - INTS :

    沿着滤波器每个空间轴的膨胀值。如果未指定,则默认每个空间轴的膨胀值为1。

  • kernel_shape - INTS(必需):

    沿每个轴的核大小。

  • pads - INTS :

    沿每个空间轴的开始和结束的填充,它可以取任何大于或等于0的值。该值表示在相应轴的开始和结束部分添加的像素数。pads格式应如下所示 [x1_begin, x2_begin…x1_end, x2_end,…],其中xi_begin表示在轴i的开始部分添加的像素数,xi_end表示在轴i的结束部分添加的像素数。此属性不能与auto_pad属性同时使用。如果未指定,则沿每个空间轴的开始和结束的填充默认为0。

  • storage_order - INT (默认为 '0'):

    张量的存储顺序。0表示行优先,1表示列优先。此属性仅用于将n元组索引值转换为单个整数值,以生成第二个输出。

  • 步幅 - 整数 :

    沿每个空间轴的步幅。如果未指定,则沿每个空间轴的步幅默认为1。

输入

  • X (异构) - T:

    来自前一个操作符的输入数据张量;对于图像情况,维度为(N x C x H x W),其中N是批量大小,C是通道数,H和W是数据的高度和宽度。对于非图像情况,维度形式为(N x C x D1 x D2 … Dn),其中N是批量大小。可选地,如果维度符号有效,操作期望输入数据张量带有维度符号[DATA_BATCH, DATA_CHANNEL, DATA_FEATURE, DATA_FEATURE …]。

输出

在1和2之间输出。

  • Y (异构) - T:

    从输入张量的平均或最大池化中输出数据张量。维度将根据不同的核、步幅和填充大小而变化。使用维度的地板值

  • 索引 (可选, 异构) - I:

    从输入张量的最大池化中得到的索引张量。索引的维度与输出张量相同。索引中的值是池化过程中所选值的索引。索引被计算为扁平化的1-D张量,并且索引不考虑填充。因此,索引中的值在[0, N x C x D1 x … x Dn)范围内。

类型约束

  • T 在 ( tensor(double), tensor(float), tensor(float16), tensor(int8), tensor(uint8) ):

    将输入和输出类型限制为浮点数和8位张量。

  • I 在 ( tensor(int64) ) 中:

    将索引张量限制为int64

MaxPool - 11

版本

  • 名称: MaxPool (GitHub)

  • 域名: main

  • since_version: 11

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本11起可用。

总结

MaxPool 消耗一个输入张量 X,并根据核大小、步幅大小和填充长度在张量上应用最大池化。最大池化包括根据核大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量 Y 中以进行进一步处理。输出的空间形状将如下所示:

output_spatial_shape[i] = floor((input_spatial_shape[i] + pad_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1)) / strides_spatial_shape[i] + 1)

output_spatial_shape[i] = ceil((input_spatial_shape[i] + pad_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1)) / strides_spatial_shape[i] + 1)

如果启用了 ceil_mode

* pad_shape[i] is sum of pads along axis i

auto_pad 是一个已弃用的属性。如果您当前正在使用它们,输出空间形状将如下所示:

VALID: output_spatial_shape[i] = ceil((input_spatial_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1) + 1) / strides_spatial_shape[i])
SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = ceil(input_spatial_shape[i] / strides_spatial_shape[i])

如果SAME_UPPERSAME_LOWER,填充形状将如下所示:

pad_shape[i] = (output_spatial_shape[i] - 1) * strides_spatial_shape[i] + ((kernel_spatial_shape[i] - 1) * dilations[i] + 1) - input_spatial_shape[i]

每个池化窗口的输出是排除填充的最大元素数。

属性

  • auto_pad - STRING (默认为 'NOTSET'):

    auto_pad 必须是 NOTSET、SAME_UPPER、SAME_LOWER 或 VALID 中的一个。默认值为 NOTSET,表示使用显式填充。SAME_UPPER 或 SAME_LOWER 表示填充输入以使输出空间大小与 input.In 匹配。在奇数情况下,SAME_UPPER 在末尾添加额外的填充,而 SAME_LOWER 在开头添加额外的填充。VALID 表示不填充。

  • ceil_mode - INT(默认为 '0'):

    是否使用ceil或floor(默认)来计算输出形状。

  • dilations - INTS :

    沿着滤波器每个空间轴的膨胀值。如果未指定,则默认每个空间轴的膨胀值为1。

  • kernel_shape - INTS(必需):

    沿每个轴的核大小。

  • pads - INTS :

    沿每个空间轴的开始和结束的填充,它可以取任何大于或等于0的值。该值表示在相应轴的开始和结束部分添加的像素数。pads格式应如下所示 [x1_begin, x2_begin…x1_end, x2_end,…],其中xi_begin表示在轴i的开始部分添加的像素数,xi_end表示在轴i的结束部分添加的像素数。此属性不能与auto_pad属性同时使用。如果未指定,则沿每个空间轴的开始和结束的填充默认为0。

  • storage_order - INT (默认为 '0'):

    张量的存储顺序。0表示行优先,1表示列优先。

  • 步幅 - 整数 :

    沿每个空间轴的步幅。如果未指定,则沿每个空间轴的步幅默认为1。

输入

  • X (异构) - T:

    来自前一个操作符的输入数据张量;对于图像情况,维度为(N x C x H x W),其中N是批量大小,C是通道数,H和W是数据的高度和宽度。对于非图像情况,维度形式为(N x C x D1 x D2 … Dn),其中N是批量大小。可选地,如果维度符号有效,操作期望输入数据张量带有维度符号[DATA_BATCH, DATA_CHANNEL, DATA_FEATURE, DATA_FEATURE …]。

输出

在1和2之间输出。

  • Y (异构) - T:

    从输入张量的平均或最大池化中输出数据张量。维度将根据不同的核、步幅和填充大小而变化。使用维度的地板值

  • 索引 (可选, 异构) - I:

    从输入张量的最大池化中得到的索引张量。索引的维度与输出张量相同。索引中的值是池化过程中所选值的索引。索引被计算为扁平化的1维张量,并且索引不考虑填充。因此,索引中的值在[0, N x C x D1 x … x Dn)范围内。

类型约束

  • T 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将输入和输出类型限制为浮点张量。

  • I 在 ( tensor(int64) ) 中:

    将索引张量限制为int64

MaxPool - 10

版本

  • 名称: MaxPool (GitHub)

  • 域名: main

  • since_version: 10

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本10起可用。

摘要

MaxPool 消耗一个输入张量 X,并根据核大小、步幅大小和填充长度在张量上应用最大池化。最大池化包括根据核大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量 Y 中以进行进一步处理。输出的空间形状将如下所示:

output_spatial_shape[i] = floor((input_spatial_shape[i] + pad_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1)) / strides_spatial_shape[i] + 1)

output_spatial_shape[i] = ceil((input_spatial_shape[i] + pad_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1)) / strides_spatial_shape[i] + 1)

如果启用了 ceil_mode

* pad_shape[i] is sum of pads along axis i

auto_pad 是一个已弃用的属性。如果您当前正在使用它们,输出空间形状将如下所示:

VALID: output_spatial_shape[i] = ceil((input_spatial_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1) + 1) / strides_spatial_shape[i])
SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = ceil(input_spatial_shape[i] / strides_spatial_shape[i])

如果SAME_UPPERSAME_LOWER,填充形状将如下所示:

pad_shape[i] = (output_spatial_shape[i] - 1) * strides_spatial_shape[i] + ((kernel_spatial_shape[i] - 1) * dilations[i] + 1) - input_spatial_shape[i]

每个池化窗口的输出是排除填充的最大元素数。

属性

  • auto_pad - STRING (默认为 'NOTSET'):

    auto_pad 必须是 NOTSET、SAME_UPPER、SAME_LOWER 或 VALID 中的一个。默认值为 NOTSET,表示使用显式填充。SAME_UPPER 或 SAME_LOWER 表示填充输入以使输出空间大小与 input.In 匹配。在奇数情况下,SAME_UPPER 在末尾添加额外的填充,而 SAME_LOWER 在开头添加额外的填充。VALID 表示不填充。

  • ceil_mode - INT(默认为 '0'):

    是否使用ceil或floor(默认)来计算输出形状。

  • dilations - INTS :

    沿着滤波器每个空间轴的膨胀值。

  • kernel_shape - INTS(必需):

    沿每个轴的核大小。

  • pads - INTS :

    沿每个空间轴的开始和结束的填充,它可以取任何大于或等于0的值。该值表示在相应轴的开始和结束部分添加的像素数。pads格式应如下所示 [x1_begin, x2_begin…x1_end, x2_end,…],其中xi_begin表示在轴i的开始部分添加的像素数,xi_end表示在轴i的结束部分添加的像素数。此属性不能与auto_pad属性同时使用。如果未指定,则沿每个空间轴的开始和结束的填充默认为0。

  • storage_order - INT (默认为 '0'):

    张量的存储顺序。0表示行优先,1表示列优先。

  • 步幅 - 整数 :

    沿着每个空间轴步进。

输入

  • X (异构) - T:

    来自前一个操作符的输入数据张量;对于图像情况,维度为(N x C x H x W),其中N是批量大小,C是通道数,H和W是数据的高度和宽度。对于非图像情况,维度形式为(N x C x D1 x D2 … Dn),其中N是批量大小。可选地,如果维度符号有效,操作期望输入数据张量带有维度符号[DATA_BATCH, DATA_CHANNEL, DATA_FEATURE, DATA_FEATURE …]。

输出

在1和2之间输出。

  • Y (异构) - T:

    从输入张量的平均或最大池化中输出数据张量。维度将根据不同的核、步幅和填充大小而变化。使用维度的地板值

  • 索引 (可选, 异构) - I:

    从输入张量的最大池化中得到的索引张量。索引的维度与输出张量相同。索引中的值是池化过程中所选值的索引。索引被计算为扁平化的1维张量,并且索引不考虑填充。因此,索引中的值在[0, N x C x D1 x … x Dn)范围内。

类型约束

  • T 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将输入和输出类型限制为浮点张量。

  • I 在 ( tensor(int64) ) 中:

    将索引张量限制为int64

MaxPool - 8

版本

  • 名称: MaxPool (GitHub)

  • 域名: main

  • since_version: 8

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本8起可用。

摘要

MaxPool 消耗一个输入张量 X,并根据核大小、步幅大小和填充长度在张量上应用最大池化。最大池化包括根据核大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量 Y 中以进行进一步处理。输出空间形状将如下所示:

output_spatial_shape[i] = floor((input_spatial_shape[i] + pad_shape[i] - kernel_spatial_shape[i]) / strides_spatial_shape[i] + 1)

* pad_shape[i] is sum of pads along axis i

auto_pad 是一个已弃用的属性。如果您当前正在使用它们,输出空间形状将如下所示:

VALID: output_spatial_shape[i] = ceil((input_spatial_shape[i] - kernel_spatial_shape[i] + 1) / strides_spatial_shape[i])
SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = ceil(input_spatial_shape[i] / strides_spatial_shape[i])

如果SAME_UPPERSAME_LOWER,填充形状将如下所示:

pad_shape[i] = (output_spatial_shape[i] - 1) * strides_spatial_shape[i] + kernel_spatial_shape[i] - input_spatial_shape[i]

每个池化窗口的输出是排除填充的最大元素数。

属性

  • auto_pad - STRING (默认为 'NOTSET'):

    auto_pad 必须是 NOTSET、SAME_UPPER、SAME_LOWER 或 VALID 中的一个。默认值为 NOTSET,表示使用显式填充。SAME_UPPER 或 SAME_LOWER 表示填充输入以使输出空间大小与 input.In 匹配。在奇数情况下,SAME_UPPER 在末尾添加额外的填充,而 SAME_LOWER 在开头添加额外的填充。VALID 表示不填充。

  • kernel_shape - INTS(必需):

    沿每个轴的核大小。

  • pads - INTS :

    沿每个空间轴的开始和结束的填充,它可以取任何大于或等于0的值。该值表示在相应轴的开始和结束部分添加的像素数。pads格式应如下所示 [x1_begin, x2_begin…x1_end, x2_end,…],其中xi_begin表示在轴i的开始部分添加的像素数,xi_end表示在轴i的结束部分添加的像素数。此属性不能与auto_pad属性同时使用。如果未指定,则沿每个空间轴的开始和结束的填充默认为0。

  • storage_order - INT (默认为 '0'):

    张量的存储顺序。0表示行优先,1表示列优先。

  • 步幅 - 整数 :

    沿着每个空间轴步进。

输入

  • X (异构) - T:

    来自前一个操作符的输入数据张量;对于图像情况,维度为(N x C x H x W),其中N是批量大小,C是通道数,H和W是数据的高度和宽度。对于非图像情况,维度形式为(N x C x D1 x D2 … Dn),其中N是批量大小。可选地,如果维度符号有效,操作期望输入数据张量带有维度符号[DATA_BATCH, DATA_CHANNEL, DATA_FEATURE, DATA_FEATURE …]。

输出

在1和2之间输出。

  • Y (异构) - T:

    从输入张量的平均或最大池化中输出数据张量。维度将根据不同的核、步幅和填充大小而变化。使用维度的地板值

  • 索引 (可选, 异构) - I:

    从输入张量的最大池化中得到的索引张量。索引的维度与输出张量相同。索引中的值是池化过程中所选值的索引。索引被计算为扁平化的1-D张量,并且索引不考虑填充。因此,索引中的值在[0, N x C x D1 x … x Dn)范围内。

类型约束

  • T 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将输入和输出类型限制为浮点张量。

  • I 在 ( tensor(int64) ) 中:

    将索引张量限制为int64

MaxPool - 1

版本

  • 名称: MaxPool (GitHub)

  • 域名: main

  • since_version: 1

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本1起可用。

摘要

MaxPool 消耗一个输入张量 X 并根据核大小、步幅大小和填充长度在张量上应用最大池化。最大池化包括根据核大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量 Y 中以进行进一步处理。输出空间形状将如下所示:

output_spatial_shape[i] = floor((input_spatial_shape[i] + pad_shape[i] - kernel_spatial_shape[i]) / strides_spatial_shape[i] + 1)

* pad_shape[i] is sum of pads along axis i

auto_pad 是一个已弃用的属性。如果您当前正在使用它们,输出空间形状将如下所示:

VALID: output_spatial_shape[i] = ceil((input_spatial_shape[i] - kernel_spatial_shape[i] + 1) / strides_spatial_shape[i])
SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = ceil(input_spatial_shape[i] / strides_spatial_shape[i])

如果SAME_UPPERSAME_LOWER,填充形状将如下所示:

pad_shape[i] = (output_spatial_shape[i] - 1) * strides_spatial_shape[i] + kernel_spatial_shape[i] - input_spatial_shape[i]

每个池化窗口的输出是排除填充的最大元素数。

属性

  • auto_pad - STRING (默认为 'NOTSET'):

    auto_pad 必须是 NOTSET、SAME_UPPER、SAME_LOWER 或 VALID 中的一个。默认值为 NOTSET,表示使用显式填充。SAME_UPPER 或 SAME_LOWER 表示填充输入以使输出空间大小与 input.In 匹配。在奇数情况下,SAME_UPPER 在末尾添加额外的填充,而 SAME_LOWER 在开头添加额外的填充。VALID 表示不填充。

  • kernel_shape - INTS(必需):

    沿每个轴的核大小。

  • pads - INTS :

    沿每个空间轴的开始和结束的填充,它可以取任何大于或等于0的值。该值表示在相应轴的开始和结束部分添加的像素数。pads格式应如下所示 [x1_begin, x2_begin…x1_end, x2_end,…],其中xi_begin表示在轴i的开始部分添加的像素数,xi_end表示在轴i的结束部分添加的像素数。此属性不能与auto_pad属性同时使用。如果未指定,则沿每个空间轴的开始和结束的填充默认为0。

  • 步幅 - 整数 :

    沿着每个空间轴步进。

输入

  • X (异构) - T:

    来自前一个操作符的输入数据张量;对于图像情况,维度为(N x C x H x W),其中N是批量大小,C是通道数,H和W是数据的高度和宽度。对于非图像情况,维度形式为(N x C x D1 x D2 … Dn),其中N是批量大小。可选地,如果维度符号有效,操作期望输入数据张量带有维度符号[DATA_BATCH, DATA_CHANNEL, DATA_FEATURE, DATA_FEATURE …]。

输出

  • Y (异构) - T:

    从输入张量的平均或最大池化中输出数据张量。维度将根据不同的核、步幅和填充大小而变化。使用维度的地板值

类型约束

  • T 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将输入和输出类型限制为浮点张量。