-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
[Good First Issue][TF FE]: Support Case operation for TensorFlow models #20534
Comments
Hey! @rkazants I'd like to work on this project |
.take |
Thank you for looking into this issue! Please let us know if you have any questions or require any help. |
Hi! @rkazants how to use a switch , should I use this or just simply use the keyword switch Thank You |
Hi! @rkazants Thank You |
Hi @rghvsh!
I would recommend you to start by creating a single layer TF model with We can see here that branches are defined as a list of TF functions in the attribute
Switch and Merge are helper operations, which are merged to OpenVino |
Hello @popovaan! I'll try this and get back to you. Raghav |
Just yesterday our CONTRIBUTING.md has been updated with a technical guide - I highly recommend checking it out. :) |
Hello! @popovaan sorry for the delay was not able to work in this had college practical exams. Have started working on this Thanks |
Hi @rghvsh, Do you have any update? Please take a look at
Best regards, |
Hey @rkazants! |
Hi @rghvsh, is there update on this task? Please share your current code in PR and ask questions if you have. Best regards, |
I am happy to announce that we have created a channel dedicated to Good First Issues support on our Intel DevHub Discord server! Join it to receive support, engage in discussions, ask questions and talk to OpenVINO developers. |
Hi @rghvsh, do you have update? Please ask questions if something is unclear. Best regards, |
Hi! @rkazants my exams got over today just will just brush up few things and start a pr tomorrow. Sorry for the very long delay Best regards, |
No worries @rghvsh, we're just checking what's going on - we have to periodically check all tasks for activity. No reason to apologize! :) |
Hi @rghvsh, any update on this task? |
Hi @rkazants, Yes i have started making the subgraphs. |
Not sure about your question. Just create |
Hello @rkazants ! hope you're doing good I wanted to run this by you is this the correct method to retrieve the desired branch type
|
Hi @rghvsh, you are correct. Keep this way. I anticipate your PR:) Best regards, |
Hey! @rkazants can we implement case like this via
Thanks |
Hi @rghvsh, in Best regards, |
Hey! @rkazants In case we have For Please see whether the below implementation is correct or should I make some changes
Thanks |
Hi @rghvsh, the idea is correct but you should also create Please create PR and we can discuss it there during code review. Best regards, |
PR #22556 |
.take |
Thank you for looking into this issue! Please let us know if you have any questions or require any help. |
Hi @rkazants, I am new to open-source contributions and have been reviewing the documentation and guide for this issue. From what I understand, I need to create a file in the op directory, named case.cpp, where I will implement the support for the Case operation in the TensorFlow Frontend (TF FE). Am I on the right track? Thanks, |
Context
OpenVINO component responsible for support of TensorFlow models is called as TensorFlow Frontend (TF FE). TF FE converts a model represented in TensorFlow opset to a model in OpenVINO opset.
In order to infer TensorFlow models with Case operation by OpenVINO, TF FE needs to be extended with this operation support.
What needs to be done?
For Case operation support, you need to add the corresponding loader into TF FE op directory and to register it into the dictionary of Loaders. One loader is responsible for conversion (or decomposition) of one type of TensorFlow operation.
Here is an example of loader implementation for TensorFlow
Einsum
operation:In this example,
translate_einsum_op
converts TFEinsum
into OVEinsum
.NodeContext
object passed into the loader packs all info about inputs and attributes ofEinsum
operation. The loader retrieves an attribute of the equation by using theNodeContext::get_attribute()
method, prepares input vector, createsEinsum
operation from OV opset and returns a vector of outputs.Responsibility of a loader is to parse operation attributes, prepare inputs and express TF operation via OV operations sub-graph. Example for
Einsum
demonstrates the resulted sub-graph with one operation. In PR #19007 you can see operation decomposition into multiple node sub-graph.Hint
Case operation is a type of body graph operations that needs special attention to extract and handle body graphs for each case. You can take a look how to approach with body graphs in loaders for While and If operations.
Example Pull Requests
Resources
Contact points
@openvinotoolkit/openvino-tf-frontend-maintainers
Ticket
TBD
The text was updated successfully, but these errors were encountered: