* [IE][VPU][GT]: Introduce Split by dynamic dimension check
At the moment, myriad plugin does not support split operation
by dynamic axis. To be sure there is no issue with optimized-out
split operation which should have been replaced with copy
stage - assertion before DTS transformation is introduced.
Check should be performed before loop with DTS transformations
because it requires dynamic context (dynamic dimension should be
visible as dynamic), otherwise dynamic dimension would be
replaced with upper-bound estimation and check will always pass.
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* [IE][nGraph]: Fixes normalize_axis symbol exporting
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* Remove 49 operators from layer creator
* Remove debug code
* Add specificCreator for deconvolution
* add specificCreator for logical not
* Fix concat creator behavior for negative axis
* add creator for TopK, overrides for visit_attribute methods
* remove layerCreator templates for removed ops
* Disable exception check for Deconvolution and TopK
* add specificCreator for stridedSlice
* add specificCreator for DetecionOutput
* resolve conflict with batchNormInference changes
* fix detection output visit_attributes for some of the bools
* Remove Ceiling from LayerCreator
* Change detectionOutput param validation to expect bool instead of uint
* detectionOutput specificCreator to set bool params as int strings
* Add vector of integer value accessor handling to xml deserializer.
* Fix indentation
* Add IEGeneric node type handling.
* Remove dependency on plugin_api library.
IEGeneric type name is passed via Visiotr API as new syntetic atribute.
* Add custom operations support
* Fix charachter literals comparison.
* Pass custom opsets to CNNNetwork:serialize().
IE extensions are stored in ngraph CNNNetwork and later used to pass
custom opsets to serialization transformation.
* Refactor custom ops tests to use template_extension library.
* Add comment on __generic_ie_type__ purpose.
* Loop op ngraph implementation, update IE IR Reader and ngraph to cnn converter
* refactoring SubGraphOp class
* type prop unit tests
* ngraph code style
* update comment
* single layer tests for Loop operation
* fix file name
* Add SpecialBodyPorts attribute in Loop op, update single layer tests
* first debug version
* more tests
* missing test file
* removed not needed shapes from test data
* move test data to new folder
* shape infer tests
* Added execution tests
* add several new tests cases, strict checks in Loop impl, temporary disable single layer tests
* ngraph codestyle, refactoring, clone_new_args test
* resolve review remarks
* fix build
* fix tests
* more execution tests
* add a new constructor of Loop op, resolve review remarks
* execution tests
* synchro with current version
* handle scalars and more tests
* scalar test enabled
* loop reference impl
* bug fixes in tests, onnx importer part and in the ref implementation of the Loop op
* applied remarks
* handle unsupported cases
* rewrite unit tests
* update INTERPRETER manifest
* is_termination_condition_always_true simplification
* [TEST] update python models tests
* review remarks
* added xfail to tiny_yolov3
* missing model test
* revert test data
* fixed numbers of failing tests
* fixed failed test description
* fix test message
* fix xfail test
* zoo models tests clean-up
* missing comma
Co-authored-by: Ivan Tikhonov <ivan.tikhonov@intel.com>
LoadNetwork takes network argument by constant reference.
Myriad plugin implementation applies transformations to
given network in order to get compiled model.
Transformations take network argument by non-constant
reference, so at some point of time network copy must be
acquired. ICNNNetwork is neither copyable nor movable, so
the only way to get network copy is using special utility
returning std::shared_ptr.
Myriad plugin does not expose any ownership strategy,
so prefers to take network argument by simple reference.
Plugin also requires nGraph -> CNN conversion during
LoadNetwork implementation. Conversion utilities returns
std::shared_ptr, which makes plugin to use workaround for
lifetime of converted object (to have 2 "pointers" to
network: raw pointer to input network and smart pointer to
converted network). Such workarounds make code more
error-prone, because using wrong pointer to semantically
the same object may lead to unexpected results.
To overcome these issues API has been changed in a way to
make interfaces more clear (do not expose ownership strategy
or mutability) and get rid of unnecessary workarounds.
Signed-off-by: Gladilov, Gleb <gleb.gladilov@intel.com>
* Generate TensorIterator without back edges from TensorFlow models
* Added a check in the MarkSubgraphsWithCorrectLayout to not fail when port is not connected
* Updated the 'protobuf2nx' to consume the graph protobuf message
* Cleanup TI from the IRv7 specific code
* Do not run some front transformations recursively
* Draft support for the ONNX Loop operation when 'cond' = True
* LoopToTI transformation changes
* Added draft of Loop operation and parser for ONNX Loop operation body
* Updated Loop body parser + added shape and type infer for the Loop operation
* Fixes for ONNX Loop operation parser
* Moved Loop parsing to Loop op extractor. Added generation of external edges for the Loop body ops
* Added support for ThresholdedRelu using decomposition
* Added support for Min ONNX operation
* Draft fixes for port_map generation for the Loop
* Rename transformation file and fix BOM
* Fixed shape inference for Loop scan outputs (axis is not None)
* Fixed shape inference for ONNX Loop operation
* Refactor checks in the TensorIteratorMerge transformation
* Code refactoring. Enabled commented transformations
* Documentation update for ONNX Loop, ThresholdedRelu and Min
* Fixed typo in the Loop front transformation where execution condition input is connected. Other refactorings
* Fixed in the Loop extractor
* Added printing 'internal_layer_id' attribute in the graph dumper
* Updated calculation of iterations number for the Loop
* Added missing code
* Fixed output port shapes and types generation for Loop operation
* Update function names and variable names in the Loop operation
* Fixed type inference for iteration count input
* Added removal of input/output ports of the Loop if they are not used
* Fixed renumbering Loop operations input/output ports to keep mandatory
* Fixed ThresholdedReluDecomposition transformation
* Updated MO IR Reader to know about Loop operation. But it is still not supported by the MO IR Reader
* Added unit test for Slice op shape infer (reverse the sequence of elements)
* Reverted changes in the ONNX loader function call to protobuf2nx
* Enable Reshape0DToSqueeze transformation recursively
* Refactored Loop operation support implementation
* Changed ThresholdedReluDecomposition to generate Const with shape [1] instead of scalar
* Code style and wording fixes
* Restored accidentally removed 'return' statement in the TI shape infer function
* Fixed comments
* Fixed comment
Co-authored-by: Evgeny Lazarev <elazarev.nnov@gmail.com>