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_UPPER
或 SAME_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 表示填充輸入,使每個軸
i
的output_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_UPPER
或 SAME_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 表示填充輸入,使每個軸
i
的output_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_UPPER
或 SAME_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_UPPER
或 SAME_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_UPPER
或 SAME_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_UPPER
或 SAME_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)
) 之中限制輸入和輸出類型為浮點數張量。