MaxPool

MaxPool - 22

版本

  • 名稱: MaxPool (GitHub)

  • 網域: main

  • since_version: 22

  • 函式: False

  • 支援層級: SupportType.COMMON

  • 形狀推斷: True

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

摘要

MaxPool 會取用輸入張量 X,並根據核心大小、步幅大小和填充長度在張量上套用最大池化。最大池化包括根據核心大小計算輸入張量子集的所有值的最大值,並將資料向下取樣到輸出張量 Y 中以進行進一步處理。輸出空間形狀的計算方式不同,取決於是否使用明確的填充 (其中使用 pads) 或使用自動填充 (其中使用 auto_pad)。使用明確的填充 (https://pytorch.dev.org.tw/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://tensorflow.dev.org.tw/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 (必要)

    沿著每個軸的核心大小。

  • 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

    來自在輸入張量上進行平均或最大池化的輸出資料張量。維度會根據各種核心、步幅和填充大小而有所不同。會使用維度的 Floor 值

  • Indices (選用,異質) - 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

  • 支援層級: SupportType.COMMON

  • 形狀推斷: True

此運算子的版本自版本 12 開始提供。

概要

MaxPool 會取用輸入張量 X,並根據核心大小、步幅大小和填充長度在張量上套用最大池化。最大池化包括根據核心大小計算輸入張量子集的所有值的最大值,並將資料向下取樣到輸出張量 Y 中以進行進一步處理。輸出空間形狀的計算方式不同,取決於是否使用明確的填充 (其中使用 pads) 或使用自動填充 (其中使用 auto_pad)。使用明確的填充 (https://pytorch.dev.org.tw/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://tensorflow.dev.org.tw/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 (必要)

    沿著每個軸的核心大小。

  • 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

    來自在輸入張量上進行平均或最大池化的輸出資料張量。維度會根據各種核心、步幅和填充大小而有所不同。會使用維度的 Floor 值

  • Indices (選用,異質) - I

    來自在輸入張量上進行最大池化的索引張量。索引的維度與輸出張量相同。索引中的值是在池化期間選取的值的索引。索引計算為扁平 1 維張量,且索引不會考慮填充。因此,索引中的值位於 [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

  • 支援層級: 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 表示列主序。

  • 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

    來自在輸入張量上進行平均或最大池化的輸出資料張量。維度會根據各種核心、步幅和填充大小而有所不同。會使用維度的 Floor 值

  • Indices (選用,異質) - 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

  • 支援層級: 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 表示列主序。

  • 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

    來自在輸入張量上進行平均或最大池化的輸出資料張量。維度會根據各種核心、步幅和填充大小而有所不同。會使用維度的 Floor 值

  • Indices (選用,異質) - 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

  • 支援層級: 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 表示列主序。

  • 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

    來自在輸入張量上進行平均或最大池化的輸出資料張量。維度會根據各種核心、步幅和填充大小而有所不同。會使用維度的 Floor 值

  • Indices (選用,異質) - I

    來自在輸入張量上進行最大池化的索引張量。索引的維度與輸出張量相同。索引中的值是在池化期間選取的值的索引。索引計算為扁平 1 維張量,且索引不會考慮填充。因此,索引中的值位於 [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

  • 支援層級: 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。

  • 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

    來自在輸入張量上進行平均或最大池化的輸出資料張量。維度會根據各種核心、步幅和填充大小而有所不同。會使用維度的 Floor 值

類型限制

  • T 的值必須在 ( tensor(double), tensor(float), tensor(float16) ) 之中

    限制輸入和輸出類型為浮點數張量。