fix NCHWc intermediates as graph outputs #3033
Merged
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.
Description: This fixes a customer reported issue where the NCHWc optimizer was dropping graph outputs when an edge was used as both a graph output and an input to another NCHWc node.
Motivation and Context
This fixes the problem reported in #3029 . The test model uses each intermediate tensor in the graph as input to the next NCHWc node and also includes the tensor in graph's outputs. The optimizer was not counting the graph output use in this case, so the Finalize pass did not emit ReorderOutput nodes to maintain the link to the graph outputs.
Added a test case for this type of graph. Also verified that the customer model runs as expected.