Pytorch中的maxpool,有一个属性叫ceil_mode,默认为False(地板模式),为True时是天花板模式。
① 当ceil_mode = False时,剩余数据不足kernel_size大小时,直接舍弃;
② 当ceil_mode = True时,将保存不足为kernel_size大小的数据保存,自动补足NAN至kernel_size大小。
举个例子:输入inputs的大小为5*5, max_pool中kernel_size为2,stride为2,
即 inputs= [ 0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4 ]
则输出为:
# 当ceil_mode = False时:
0 0 | 0 0
1 1 | 1 1
————————————————
2 2 | 2 2
3 3 | 3 3
输出:
[ 1 1
3 3 ]
即:数据不足以构成2*2,舍弃。
# 当ceil_mode = True时:
0 0 | 0 0 | 0 ×
1 1 | 1 1 | 1 ×
——————————————————————
2 2 | 2 2 | 2 ×
3 3 | 3 3 | 3 ×
———————————————————————
4 4 | 4 4 | 4 ×
× × | × × | × ×
输出:
[ 1 1 1
3 3 3
4 4 4 ]
即:数据不足以构成2*2,仍然对剩余数据进行计算。