cpu backend maxpool 运算结果跟本地的python结果基本一致,但是metal计算结果跟cpu不一致,差别较大
我看官方给出测试代码只测试了PoolPadType_VALID padding类型
https://github.com/alibaba/MNN/blob/master/test/op/PoolingTest.cpp
难道SAME padding模式在metal实现跟cpu不一致吗?
cpu backend maxpool 运算结果跟本地的python结果基本一致,但是metal计算结果跟cpu不一致,差别较大
我看官方给出测试代码只测试了PoolPadType_VALID padding类型
https://github.com/alibaba/MNN/blob/master/test/op/PoolingTest.cpp
难道SAME padding模式在metal实现跟cpu不一致吗?
2条答案
按热度按时间hl0ma9xz1#
查看metalPooling.metal文件,最大池化代码实现部分,发现下面的数据结构及其值分别为
struct pooling_sizes {
int input_width; ---> 480
int input_height; ---> 360
int output_width; ---> 480
int output_height; ---> 360
int slice; ---> 1
int kernel_width; ---> 9
int kernel_height; ---> 9
int stride_width; ---> 1
int stride_height; ---> 1
int pad_width; ---> 0
int pad_height; ---> 0
};
结合metal代码逻辑看,怀疑是pad_width 和 pad_height值有问题导致的?
wz3gfoph2#
了解了,我们测试一下