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)
# 可以实现不同计算方式的池化