Fix DequantizeLinear-21 blocked quantization for axis > 1 #32918
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Details:
This PR fixes incorrect behavior of DequantizeLinear operator (opset 21) with blocked quantization when axis > 1.
The old implementation had two issues:
The root cause was incorrect reshape logic that used different ordering for axis = 0 vs axis > 0:
This caused elements to interleave instead of forming sequential blocks, which violates the ONNX specification.
Example
For axis=1, block_size=2, input=[9,9,9,9,9,9,9,9], scale=[1,2,3,4], zero_point=[1,2,3,4]:
Changes
Implementation
src/frontends/onnx/frontend/src/op/dequantize_linear.cpp:
Updated 1 existing test:
Tickets: