Pytorch: Pooling layers詳解

Pooling layers屬於torch.nn包下
https://pytorch.org/docs/stable/nn.html#pooling-layers
在這裏插入圖片描述
NOTE: 1d和2d和3d使用的方式都是相同的;本質的區別就在於操作的對象是多少維度的,1d是對一維的向量進行操作,2d是對二維的矩陣進行操作,3d是對三維的矩陣進行操作。
在這裏插入圖片描述

import torch.nn as nn

MaxPool

定義

nn.MaxPool1d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)
nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)
nn.MaxPool3d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

參數
return_indices: 如果爲True時,會返回最大值所在的下標位置,可方便後續的在使用torch.nn.MaxUnpool-1/2/3d 上池化操作時根據位置填回原來的位置,其他位置填0。
ceil_mode: 如果爲True時,會使用向上取整代替默認的向下取整操作來計算輸出的形狀
在這裏插入圖片描述
shape
1D
對一個C×H×W的三維輸入Tensor, 池化輸出爲C×H×N, 即按照H軸逐行對W軸一維最大池化
在這裏插入圖片描述
2D
對一個B×C×H×W的四維輸入Tensor, 池化輸出爲B×C×M×N, 即按照C軸逐通道對H×W二維平面最大池化
在這裏插入圖片描述
3D
對一個B×C×D×H×W的五維輸入Tensor, 池化輸出爲B×C×M×N×K, 即按照C軸逐通道對D×H×W三維空間最大池化
在這裏插入圖片描述
對於2D和3D來說,kernel_size, stride, padding, dilation可以是單個值也可以是一個元組,對應每一個維度的值。
在這裏插入圖片描述在這裏插入圖片描述

AdaptiveMaxPool

定義
指定輸出的大小,自適應的調節kernel_size,stride, padding得到指定大小的形狀

torch.nn.AdaptiveMaxPool1d(output_size, return_indices=False)
torch.nn.AdaptiveMaxPool2d(output_size, return_indices=False)
torch.nn.AdaptiveMaxPool3d(output_size, return_indices=False)

參數
1D
在這裏插入圖片描述
2D
在這裏插入圖片描述
3D
在這裏插入圖片描述
example

#1D
input = torch.randn(1, 64, 8)
m = nn.AdaptiveMaxPool1d(5)
output = m(input)
>>> (1, 64, 5)
#2D
input = torch.randn(1, 64, 8, 9)
m = nn.AdaptiveMaxPool2d((5, 7))
output = m(input)
>>> (1, 64, 5, 7)
#3D
input = torch.randn(1, 64, 8, 9, 10)
m = nn.AdaptiveMaxPool2d((5, 7, 8))
output = m(input)
>>> (1, 64, 5, 7, 8)

AvgPool

定義

nn.AvgPool1d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True)
nn.AvgPool2d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True, divisor_override=None)
nn.AvgPool3d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True, divisor_override=None)

參數
ceil_mode: 如果爲True時,會使用向上取整代替默認的向下取整操作來計算輸出的形狀
count_include_pad: 當爲True時,在計算平均池化操作時將包括padding填充的0,默認是包括的。
在這裏插入圖片描述
shape
1D
在這裏插入圖片描述
2D
在這裏插入圖片描述
3D
在這裏插入圖片描述

AdaptiveAvgPool

和上述AdaptiveMaxPool用法完成一致,不再贅述
定義

nn.AdaptiveAvgPool1d(output_size)
nn.AdaptiveAvgPool2d(output_size)
nn.AdaptiveAvgPool3d(output_size)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章