- 
                Notifications
    You must be signed in to change notification settings 
- Fork 19.6k
More OpenVINO Operations #21774
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
More OpenVINO Operations #21774
Conversation
| Summary of ChangesHello @danielenricocahall, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the OpenVINO backend by implementing new operations and refining existing ones. It focuses on improving code structure through axis resolution centralization, expanding functionality with  Highlights
 Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either  
 Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a  Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
 | 
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.
Code Review
This pull request introduces several enhancements to the OpenVINO backend, including axis resolution cleanup, heaviside function support, test exclusion list updates, and variance/std implementation fixes. The changes aim to improve code maintainability and extend the functionality of supported operations.
| Codecov Report❌ Patch coverage is  
 Additional details and impacted files@@            Coverage Diff             @@
##           master   #21774      +/-   ##
==========================================
- Coverage   82.69%   82.66%   -0.04%     
==========================================
  Files         573      577       +4     
  Lines       58888    59409     +521     
  Branches     9218     9310      +92     
==========================================
+ Hits        48696    49109     +413     
- Misses       7845     7899      +54     
- Partials     2347     2401      +54     
 Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
 | 
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
| @danielenricocahall this PR is still in draft. Let us know when it's ready for review. | 
| 
 @hertschuh thank you for the reminder! Forgot about this one 😅 I think it's ready for review though, flipping the switch now | 
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.
Thanks for all the additions and simplifications!
        
          
                keras/src/backend/openvino/numpy.py
              
                Outdated
          
        
      | axis = 0 | ||
| axis = ov_opset.constant(axis, Type.i32).output(0) | ||
| zero = ov_opset.constant(0.0, work_dtype).output(0) | ||
| return OpenVINOKerasTensor(ov_opset.multiply(x, zero).output(0)) | 
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.
nitpick: wouldn't a broadcast be faster?
ov_opset.broadcast(const_zero, ov_opset.shape_of(x)).output(0)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.
Yes that's much smarter. Updated!
_resolve_axisfunction)heavisidefor functionality only (typing still needs work)test_isposinffrom exclusion list as we now support that operationpadtype testsNote: The type tests for
varandstdare currently omitted because the tests expect f32 and we're returning f64. - however, if we convert to f32, the results for the operation tests are slightly off e.g.,unsure if the tolerances in the correctness tests themselves need adjustment or if there's some type coercion happening under the hood when the values are being calculated. I tried different implementations for variance but they all arrive at the same result.