-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add squeeze v15 op spec #26989
Add squeeze v15 op spec #26989
Conversation
...cles_en/documentation/openvino-ir-format/operation-sets/operation-specs/shape/squeeze-15.rst
Show resolved
Hide resolved
...cles_en/documentation/openvino-ir-format/operation-sets/operation-specs/shape/squeeze-15.rst
Show resolved
Hide resolved
|
||
* *T_INT*: any supported integer type. | ||
|
||
**Example** |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please add attribute value to example IR. Consider adding additional examples that will show differences between attribute values and maybe examples of dynamic rank or ignored non-1 dimensions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
...cles_en/documentation/openvino-ir-format/operation-sets/operation-specs/shape/squeeze-15.rst
Outdated
Show resolved
Hide resolved
...cles_en/documentation/openvino-ir-format/operation-sets/operation-specs/shape/squeeze-15.rst
Outdated
Show resolved
Hide resolved
PR that adds opset15 to documentation was merged, please update following files to link added specification:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The "Note" part seems to describe only the old default behavior, without considering the new allow_axis_skip attribute.
|
||
.. note:: | ||
|
||
- If index of the dimension to squeeze is provided as a constant input and it points to a dynamic dimension that might be `1`, then the dimension is considered as squeezable. Therefore the rank of the output shape will be reduced, but not dynamic. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- If index of the dimension to squeeze is provided as a constant input and it points to a dynamic dimension that might be `1`, then the dimension is considered as squeezable. Therefore the rank of the output shape will be reduced, but not dynamic. | |
- If index of the dimension to squeeze is provided as a constant input and it points to a dynamic dimension that might be `1`, and the *allow_axis_skip* attribute is ``false``, then the dimension is considered as squeezable. Therefore the rank of the output shape will be reduced, but not dynamic. If dynamic rank is expected for such case, *allow_axis_skip* attribute need to be set to ``true``. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
**Attributes**: | ||
|
||
* *allow_axis_skip* | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we expect exception raised when allow_axis_skip=False
and given axis corresponds to dimension that is not squeezable?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It could be implemented to throw, but the intention is to keep the v0::Squeeze compatible behavior when allow_axis_skip=False
.
For model enablement the v0::Squeeze has been already updated to be not so strict for static dimensions, but it was not possible to update the all dynamic cases and keep backward compatibility. Especially previous Squeeze logic assumes that dynamic dim with 1 in range like {-1} or {1-2} is squeezable, and produces static rank.
While the recent request to align with torch is to produce dynamic rank for such case.
In fact allow_axis_skip=False
can be understood like assume_dynamic_dim_is_squeezable=True
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks that this mode is also helpful for TF Squeeze op (https://www.tensorflow.org/api_docs/python/tf/raw_ops/Squeeze) when axis = []. For such case, I can compute axes for our Squeeze using ShapeOf
and Range
ops and set this mode allow_axis_skip=False
. This way it will squeeze all dims that are possible to squeeze. So we can squeeze dimension during both conversion/loading
and inference
, right?
@@ -0,0 +1,174 @@ | |||
Squeeze | |||
======= | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why do we require such version? Is there similar operation in frameworks like PyTorch, TF, ONNX? Can we refer a link to such operation?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's needed for alignment with torch, more details can be found in the internal ticket: 143585.
Details:
Tickets: