文章目录
- 1.解释
- 2.代码
- 3.计算
1.解释
在 PyTorch 中,ceil_mode 参数用于控制最大池化操作中输出张量的形状计算方式。具体来说:
- ceil_mode=False(默认值):使用 floor 函数来计算输出张量的形状。(想下取整)
- ceil_mode=True:使用 ceil 函数来计算输出张量的形状。(向上取整)
2.代码
import torch
import torch.nn as nn
# 创建输入张量
input = torch.arange(1, 26).view(1, 1, 5, 5).float()
# 定义最大池化层,ceil_mode=False
maxpool_floor = nn.MaxPool2d(kernel_size=2, stride=2, padding=0, ceil_mode=False)
output_floor = maxpool_floor(input)
# 定义最大池化层,ceil_mode=True
maxpool_ceil = nn.MaxPool2d(kernel_size=2, stride=2, padding=0, ceil_mode=True)
output_ceil = maxpool_ceil(input)
print("Input:")
print(input)
print("Output with ceil_mode=False:")
print(output_floor)
print("Output with ceil_mode=True:")
print(output_ceil)
Input:
tensor([[[[ 1., 2., 3., 4., 5.],
[ 6., 7., 8., 9., 10.],
[11., 12., 13., 14., 15.],
[16., 17., 18., 19., 20.],
[21., 22., 23., 24., 25.]]]])
Output with ceil_mode=False:
tensor([[[[ 7., 9.],
[17., 19.]]]])
Output with ceil_mode=True:
tensor([[[[ 7., 9., 10.],
[17., 19., 20.],
3.计算
- ceil:(5-2)/2+1 = 3
- floor:(5-2)/2+1 = 2