MaxPool

MaxPool - 22

版本

  • 名称: MaxPool (GitHub)

  • 领域: main

  • 起始版本: 22

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的算子 自版本 22 起可用

摘要

MaxPool 接收一个输入张量 X,并根据 kernel 大小、步长大小和填充长度对张量应用最大池化。最大池化包括根据 kernel 大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量 Y 中以供进一步处理。输出空间形状的计算方式根据是否使用显式填充(使用 pads)或自动填充(使用 auto_pad)而有所不同。对于显式填充 (https://pytorch.ac.cn/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 的 pads 总和。将忽略从右侧填充区域开始的滑动窗口。

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://tensorflowcn.cn/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 表示对输入进行填充,以便每个轴 ioutput_shape[i] = ceil(input_shape[i] / strides[i])。填充在两侧平均或几乎平均分配(取决于其是偶数还是奇数)。如果填充是奇数,则在 SAME_UPPER 的末尾添加额外填充,在 SAME_LOWER 的开头添加额外填充。

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

    计算输出形状时使用 ceil 还是 floor(默认)。

  • dilations - INTS :

    沿过滤器每个空间轴的膨胀值。如果不存在,则每个空间轴的膨胀默认为 1。

  • kernel_shape - INTS (必需)

    沿每个轴的 kernel 大小。

  • 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 元组索引值转换为单个整数值以生成第二个输出。

  • strides - INTS :

    沿每个空间轴的步长。如果不存在,则每个空间轴的步长默认为 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

    来自输入张量上进行平均或最大池化的输出数据张量。维度将根据不同的 kernel、步长和填充大小而变化。使用维度的向下取整值。

  • Indices (可选, 异构) - I

    来自输入张量上进行最大池化的索引张量。索引的维度与输出张量相同。indices 中的值是池化期间选定值的索引。索引计算为展平的 1-D 张量,并且索引不考虑填充。因此 indices 中的值在 [0, N x C x D1 x … x Dn) 范围内。

类型约束

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

    将输入和输出类型约束为 float 和 8 比特张量。

  • I 在 ( tensor(int64) )

    将索引张量约束为 int64

MaxPool - 12

版本

  • 名称: MaxPool (GitHub)

  • 领域: main

  • 起始版本: 12

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的算子 自版本 12 起可用

摘要

MaxPool 接收一个输入张量 X,并根据 kernel 大小、步长大小和填充长度对张量应用最大池化。最大池化包括根据 kernel 大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量 Y 中以供进一步处理。输出空间形状的计算方式根据是否使用显式填充(使用 pads)或自动填充(使用 auto_pad)而有所不同。对于显式填充 (https://pytorch.ac.cn/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 的 pads 总和。

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://tensorflowcn.cn/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 表示对输入进行填充,以便每个轴 ioutput_shape[i] = ceil(input_shape[i] / strides[i])。填充在两侧平均或几乎平均分配(取决于其是偶数还是奇数)。如果填充是奇数,则在 SAME_UPPER 的末尾添加额外填充,在 SAME_LOWER 的开头添加额外填充。

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

    计算输出形状时使用 ceil 还是 floor(默认)。

  • dilations - INTS :

    沿过滤器每个空间轴的膨胀值。如果不存在,则每个空间轴的膨胀默认为 1。

  • kernel_shape - INTS (必需)

    沿每个轴的 kernel 大小。

  • 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 元组索引值转换为单个整数值以生成第二个输出。

  • strides - INTS :

    沿每个空间轴的步长。如果不存在,则每个空间轴的步长默认为 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

    来自输入张量上进行平均或最大池化的输出数据张量。维度将根据不同的 kernel、步长和填充大小而变化。使用维度的向下取整值。

  • Indices (可选, 异构) - I

    来自输入张量上进行最大池化的索引张量。索引的维度与输出张量相同。indices 中的值是池化期间选定值的索引。索引计算为展平的 1-D 张量,并且索引不考虑填充。因此 indices 中的值在 [0, N x C x D1 x … x Dn) 范围内。

类型约束

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

    将输入和输出类型约束为 float 和 8 比特张量。

  • I 在 ( tensor(int64) )

    将索引张量约束为 int64

MaxPool - 11

版本

  • 名称: MaxPool (GitHub)

  • 领域: main

  • 起始版本: 11

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的算子 自版本 11 起可用

摘要

MaxPool 接收一个输入张量 X,并根据 kernel 大小、步长大小和填充长度对张量应用最大池化。最大池化包括根据 kernel 大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量 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 表示对输入进行填充,以便输出空间大小与输入匹配。如果填充是奇数,则在 SAME_UPPER 的末尾添加额外填充,在 SAME_LOWER 的开头添加额外填充。VALID 表示不进行填充。

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

    计算输出形状时使用 ceil 还是 floor(默认)。

  • dilations - INTS :

    沿过滤器每个空间轴的膨胀值。如果不存在,则每个空间轴的膨胀默认为 1。

  • kernel_shape - INTS (必需)

    沿每个轴的 kernel 大小。

  • 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 表示列主序。

  • strides - INTS :

    沿每个空间轴的步长。如果不存在,则每个空间轴的步长默认为 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

    来自输入张量上进行平均或最大池化的输出数据张量。维度将根据不同的 kernel、步长和填充大小而变化。使用维度的向下取整值。

  • Indices (可选, 异构) - I

    来自输入张量上进行最大池化的索引张量。索引的维度与输出张量相同。indices 中的值是池化期间选定值的索引。索引计算为展平的 1-D 张量,并且索引不考虑填充。因此 indices 中的值在 [0, N x C x D1 x … x Dn) 范围内。

类型约束

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

    将输入和输出类型约束为 float 张量。

  • I 在 ( tensor(int64) )

    将索引张量约束为 int64

MaxPool - 10

版本

  • 名称: MaxPool (GitHub)

  • 领域: main

  • 起始版本: 10

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的算子 自版本 10 起可用

摘要

MaxPool 接收一个输入张量 X,并根据 kernel 大小、步长大小和填充长度对张量应用最大池化。最大池化包括根据 kernel 大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量 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 表示对输入进行填充,以便输出空间大小与输入匹配。如果填充是奇数,则在 SAME_UPPER 的末尾添加额外填充,在 SAME_LOWER 的开头添加额外填充。VALID 表示不进行填充。

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

    计算输出形状时使用 ceil 还是 floor(默认)。

  • dilations - INTS :

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

  • kernel_shape - INTS (必需)

    沿每个轴的 kernel 大小。

  • 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 表示列主序。

  • strides - INTS :

    沿每个空间轴的步长。

输入

  • 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

    来自输入张量上进行平均或最大池化的输出数据张量。维度将根据不同的 kernel、步长和填充大小而变化。使用维度的向下取整值。

  • Indices (可选, 异构) - I

    来自输入张量上进行最大池化的索引张量。索引的维度与输出张量相同。indices 中的值是池化期间选定值的索引。索引计算为展平的 1-D 张量,并且索引不考虑填充。因此 indices 中的值在 [0, N x C x D1 x … x Dn) 范围内。

类型约束

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

    将输入和输出类型约束为 float 张量。

  • I 在 ( tensor(int64) )

    将索引张量约束为 int64

MaxPool - 8

版本

  • 名称: MaxPool (GitHub)

  • 领域: main

  • 起始版本: 8

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的算子 自版本 8 起可用

摘要

MaxPool 接收一个输入张量 X,并根据 kernel 大小、步长大小和填充长度对张量应用最大池化。最大池化包括根据 kernel 大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量 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 表示对输入进行填充,以便输出空间大小与输入匹配。如果填充是奇数,则在 SAME_UPPER 的末尾添加额外填充,在 SAME_LOWER 的开头添加额外填充。VALID 表示不进行填充。

  • kernel_shape - INTS (必需)

    沿每个轴的 kernel 大小。

  • 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 表示列主序。

  • strides - INTS :

    沿每个空间轴的步长。

输入

  • 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

    来自输入张量上进行平均或最大池化的输出数据张量。维度将根据不同的 kernel、步长和填充大小而变化。使用维度的向下取整值。

  • Indices (可选, 异构) - I

    来自输入张量上进行最大池化的索引张量。索引的维度与输出张量相同。indices 中的值是池化期间选定值的索引。索引计算为展平的 1-D 张量,并且索引不考虑填充。因此 indices 中的值在 [0, N x C x D1 x … x Dn) 范围内。

类型约束

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

    将输入和输出类型约束为 float 张量。

  • I 在 ( tensor(int64) )

    将索引张量约束为 int64

MaxPool - 1

版本

  • 名称: MaxPool (GitHub)

  • 领域: main

  • 起始版本: 1

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的算子 自版本 1 起可用

摘要

MaxPool 接收一个输入张量 X,并根据 kernel 大小、步长大小和填充长度对张量应用最大池化。最大池化包括根据 kernel 大小计算输入张量子集的所有值的最大值,并将数据下采样到输出张量 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 表示对输入进行填充,以便输出空间大小与输入匹配。如果填充是奇数,则在 SAME_UPPER 的末尾添加额外填充,在 SAME_LOWER 的开头添加额外填充。VALID 表示不进行填充。

  • kernel_shape - INTS (必需)

    沿每个轴的 kernel 大小。

  • pads - INTS :

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

  • strides - INTS :

    沿每个空间轴的步长。

输入

  • 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

    来自输入张量上进行平均或最大池化的输出数据张量。维度将根据不同的 kernel、步长和填充大小而变化。使用维度的向下取整值。

类型约束

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

    将输入和输出类型约束为 float 张量。