请问一下megengine能否实现类似pytorch nn.AdaptiveAvgPool2d(1)
的方法
例如:
import megengine.module as M
import megengine as mge
import numpy as np
pool = M.pooling.AvgPool2d((6, 8), 1, 0)
x = mge.tensor(np.random.rand(3, 3, 6, 8).astype('float32'))
ret = pool(x) # ret.shape (3, 3, 1, 1)
但是pooling
的 size和输入特征图强相关的,如果特征图更换一个尺度就不能够使用了。
是否应该通过F.mean()
实现呢?
out = F.mean((F.mean(x, 2, keepdims=True)), 3, keepdims=True)
但是在判断的时候
ret[:, :, 0, 0] == out[:, :, 0, 0]
#Tensor([[1. 1. 1.]
# [0. 0. 1.]
# [0. 0. 0.]])
#
不确定是浮点数精度还是我实现的方法有问题,
请问F.mean()
实现的方法是否和pool2d计算方式一致,能否以这种方式实现每个通道的平均值。