Fix ComplexTypeMark loss in TupleUnpack, ListUnpack, squeeze, select, narrow, type_as operations #33098
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 shape mismatch error when converting Qwen-Image model
Root cause:
ComplexTypeMarkmarker was lost when complex tensors passed through various operations. OpenVINO usesComplexTypeMarkto track complex tensors (represented as float tensors with trailing dimension of size 2). When the marker is lost, subsequent operations incorrectly add extra dimensions for "alignment".Changes:
ComplexTypeMarkRemover transformation - removes ComplexTypeMark nodes from final graph for models with complex tensor outputs
PrimListUnpackReplacer reordering - moved to no_val block to execute before validation
prim::TupleUnpack - preserve ComplexTypeMark through tuple unpacking (new translator + replacer fix)
prim::ListUnpack - preserve ComplexTypeMark in else-branch for unresolved cases
aten::squeeze - unwrap-operate-rewrap pattern to preserve ComplexTypeMark
aten::select - unwrap-operate-rewrap pattern to preserve ComplexTypeMark
aten::narrow - unwrap-operate-rewrap pattern to preserve ComplexTypeMark
aten::type_as - dedicated translator using ComplexTypeMark::convert_like() instead of generic ConvertLike
Tickets: