Add If rank alignment and LSTM rank reduction to enable silero_vad conversion #32677
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 adds rank alignment for ONNX If nodes and rank reduction for LSTM operations to enable conversion of models like silero_vad.onnx.
Problem 1: If Node Rank Mismatch
ONNX If nodes with branches producing outputs of different ranks were causing dynamic rank in the output, which prevented further graph optimizations and caused runtime errors in operations requiring static rank (Conv, ReduceMean).
Example:
Before fix:
After fix:
Problem 2: LSTM High-Rank Inputs
Models like silero_vad.onnx have LSTM layers where input tensors have rank > 3 (e.g., [1,1,?,?,?]), but OpenVINO LSTM expects exactly rank 3 [batch, seq, features].
Example from silero_vad:
Before fix:
After fix:
Tickets: