ONNX Maxpool算子pads参数排列顺序规则澄清问询
ONNX MaxPool算子pads参数规则解答
核心结论
你提到的(pad_bottom, pad_top, pad_right, pad_left)排列顺序是错误的,你看到的示例里的维度标注不符合ONNX官方定义。
通用规则
ONNX所有包含padding参数的算子(含MaxPool),pads参数统一遵循以下规则:
- 对于N维空间输入,
pads是长度为2*N的整数元组 - 排列逻辑:先按输入空间维度从高到低的顺序,依次列出每个维度的起始端padding值,再按相同的空间维度顺序,依次列出每个维度的结束端padding值
2D场景下的具体顺序
针对常规2D图像输入(ONNX默认NCHW格式,空间维度为高度H、宽度W),4个pads值的对应顺序为:(pad_top, pad_bottom, pad_left, pad_right)
验证方式
可通过输出尺寸计算公式验证顺序是否正确:
输出高度 = floor((输入高度 + pad_top + pad_bottom - 卷积核高度) / 步长高度) + 1
输出宽度 = floor((输入宽度 + pad_left + pad_right - 卷积核宽度) / 步长宽度) + 1
将对应参数代入计算,结果和官方示例给出的输出尺寸完全匹配即可验证顺序正确性。
内容的提问来源于stack exchange,提问作者harry
相关产品推荐
相关产品推荐

