Pytorch官方文檔(十)翻譯版本
torch.nn.MaxPool2d
作用:
- 對由多個輸入平面組成的輸入Tensor應用2維 max池化,就是說在一個卷積核內部,只取最大的那個數作爲輸出結果。
- 在最簡單的情況下,輸入大小爲(N, C, H, W)、輸出爲(N, C, Hout, Wout)並且kernel_size爲(KH, KW)的層可以被精確地描述爲:
參數:
- kernel_size,應用maxpool操作的窗口大小
- stride,窗口的步長,默認值時kernel_size,步長的意思是窗口每次移動的距離。
- padding,兩邊要添加的隱式零填充。
- dilation,控制窗口元素步長的參數。
- return_indices,如果True,將沿着輸入返回最大的下標。
- ceil_mode,True,將會使用ceil代替floor完成計算。
例子:
m = nn.MaxPool2d(3, stride=2)
input = torch.randn(20, 16, 11, 11)
output = m(input)
print(output.size())
# 輸出結果
torch.Size([20, 16, 5, 5])
# 可以看到 這個就是大家最瞭解的最大池化了
上圖爲官方文檔中給出的公式,鑑於dilation基本爲1,所以公式變形爲:Hout = [(Hin + 2*p - kernel_size) / stride ]+ 1
torch.nn.AvgPool2d
- 名叫平均池化,對輸入2維Tensor做池化,與上面的最大池化差不多,只有計算方式有不同。
- 平均池化的計算方式爲,在一個卷積核內,將所有數計算平均值作爲輸出的結果。
torch.nn.LPPool2d
作用:
- 定義了一個新的池化函數,函數表達式如下:
- 當 p=∞ 時,此函數與最大池化功能相同;當 p=1時,此函數相當於求和池化。
- 可以看到,這樣的選取更加自由。
參數:
- kernel_size, 窗口的大小。
- stride,步長。
- ceil_mode,True,將會使用ceil代替floor完成計算。
例子:
>>> # power-2 pool of square window of size=3, stride=2
>>> m = nn.LPPool2d(2, 3, stride=2)
>>> # pool of non-square window of power 1.2
>>> m = nn.LPPool2d(1.2, (3, 2), stride=(2, 1)) # 窗口內所有數1.2次冪求和開1.2次方
>>> input = torch.randn(20, 16, 50, 32)
>>> output = m(input)
# 可以實現不同計算方式的池化