Avg_Pool2d 差异对比#
torch.nn.AvgPool2d
torch.nn.AvgPool2d(
kernel_size,
stride=None,
padding=0,
ceil_mode=False,
count_include_pad=True,
divisor_override=None
)
更多请查看 torch.nn.Avg_Pool2d
.
megengine.module.Avg_Pool2d
megengine.module.Avg_Pool2d(
kernel_size,
stride=None,
padding=0,
mode='average_count_exclude_padding',
** kwargs
)
更多请查看 megengine.module.Avg_Pool2d
.
参数差异#
mode 参数#
MegEngine 中
mode
参数对应 PyTorch 的count_include_pad
参数,两者默认值设置有差别,MegEngine 中默认不计算 padding 的值,PyTorch 反之;
ceil_mode 参数#
PyTorch 中有 ceil_mode
参数,MegEngine 无此参数,此参数通过计算公式达到便于控制 output 的尺寸,当输出后的图像大小不满足 output 输出为整数时,此参数可以不用 padding,用此参数向上或者向下取整。MegEngine 则通过手动增加 padding 控制 output,如果输出不为整数,则自动向下取整。
divisor_override 参数#
PyTorch 中有 divisor_override 参数,MegEngine 无此参数,该参数的目的是可以控制求期望时的分母,将结果缩放/扩大,MenEgngine 中 无此参数。
import megengine
import torch
import numpy as np
# 定义输入张量
input_tensor1 = torch.randn(1, 3, 64, 64)
input_tensor2 = megengine.random.normal(size=(1,3,64,64))
# 使用MegEngine的avg_pool2d
me_pool = megengine.module.AvgPool2d(kernel_size=2, stride=2)
me_output = me_pool(input_tensor2.astype(np.float32))
# 使用PyTorch的avg_pool2d
torch_pool = torch.nn.AvgPool2d(kernel_size=2, stride=2)
torch_output = torch_pool(input_tensor1)
# 打印输出结果
print("MegEngine output:", me_output.numpy())
print("PyTorch output:", torch_output.numpy())