* Updated conversion of TF OD API 2.4 SSD models
* Fixed issue when more Conv2D nodes were selected for weights permutation when converting TF OD API models
* Code style fixes
* Fixed code comments
* add priors to loader and counts transformation
* fixes in select insertion for case with context gathering - LSTM - context gathering
fix for edge parallel to ReadValue
extend counts option to case of priors inside mdl model file
* fixed tests
* fixed typo
* fixed issue with input names
* fix priors loading + comments
* fix e2e test: error with not found transformation
* print debug info for dependency graph - should be reverted
* should be reverted: debug commit
* Revert "fix e2e test: error with not found transformation"
This reverts commit 8320fa99bf.
* revert debug commits
* fixes after review
* review fixes
* review change
* review changes
* Add ShapeOfConstFolding transform
* Add unit tests
* Update bom file
* Update transform file
* Hot fix
* Fix midle replaser
* Update unit tests
* Fix get value
* Refactoring Const Folding transformation. Move to back
* Update bom file
* Remove unuse code
* Add some unit tests
* Refactoring unit test
* Hot fix
* Add support resize with 2 inputs
* Add unit tests
* Hot fix
* Change resize check from port count to connected num port conditions
* Fix conditions
* Refactoring code according to review
* Fix according to review
* Change onnresize11 input condition
* added new transformation to check the uniqueness of nodes names
* added unittest
* remove redundant line
* conversation resolving
* updated unittest
* added new unittest, added check for uniqueness of new node name
* added a description
* added renaming of several results with the same name and unittest for this case
* another implementation, updated unittests
* added a comment
* updated comments
* added comment to the nodes_with_equal_names func
* added a condition
* added a result name check in unittests
* fix marking of nodes with shape values: corrected 'leaky' starting condition
* cleaned up code
* fixed t2t type collision error: removed strict assert from Pow; now type_infer is same as for other eltwise ops; added warnings about type alignment
* type cast for Pow according to ONNX spec
* fix highlight in dump_graph_for_graphviz
* soft_get('op')
* Revert "soft_get('op')"
This reverts commit cadfe18f
* Revert "type cast for Pow according to ONNX spec"
This reverts commit bf85ebf8
* applied review comments
* comment for ShapeOf bfs, removed Error from elementwise op
* reverted back dump_graph_for_graphviz: fill_color -> node_attrs
* applied last review comments: returned back Error, added type_infer into unit-test utils
* Added extractor for ONNX operation Size
* Moved transformation of Size operation from TF specific to generic front phase
* Updated list of supported ONNX operation
* Moved unit test for Size decomposition to a new location
* Added operation ConvertLike to the MO
* Fixed transformations with Pad which insert Const with pad value of incorrect type
* Added constant folding to ConvertLike operation
* Fixed unit tests for Pad transformations to include ConverLike operations
* Update copyright year
* nGraph code style fix
* Fix errors in VariadicSplit layer restored from serialized IR
* Update VariadicSplit specification and error message to allow 1D tensors on 1st input
* Update spec
* Resolve comments
* Apply comments, add unit tests
* Update unit tests
* Add axis support
* Update dequant extractor
* Update qdeq ops
* Refactoring quantize
* Update dequantize resolver
* Update dequantize op
* Refactoring dequantize
* Some fixes for quantize and dequantize
* Update unit tests
* Reafctoring quantize/dequantize axis support
* Move quantize/dequantize resolvers to middle
* hot fix
* Fix unit tests
* Fix unit tests
* Update quintize resolver comment
* Refactoring code according to code review
* Fix according to review
* Change order for transforms quantize pipline
* initial solution
* added unit-tests + some corrections
* axis getting improvements
* fixed MO IR reader for old IR's
* a couple of corrections
* applied review comments
* corrected negative batch_dims normalization for shape calculation, for IR original negative values are kept
* added additional checks and negative tests
* Extend MO for operation Einsum-7
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Add extractor for einsum and optimize code based on review feedback
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Fix the code based on the review: correct code, tests and comments; move insert_transpose
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Fix LayoutChangeForEinsum transformation condition
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Update third-party dependencies
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Fixed attributes saving to keep tensor debug info in Parameter node.
* Added comment and unit tests.
* Small correction.
* Small correction of unit test.
* Comment corrected.
* Written MO classes for DFT and IDFT operations.
* Added class to read TF (I)FFT operations.
* Written extractors for TF operations FFT, FFT2D, FFT3D, IFFT, IFFT2D, IFFT3D.
* Written MO Roll operation and TF Roll operation extractor.
* Started to write needed transformations.
* Written transformation StridedSlices + Complex + Roll + (i)FFTxD + Roll + (Imag, Real) + Pack -> Roll + (I)DFT + Roll.
* Written transformation for Complex + ComplexAbs.
* Written correction of axes of Roll.
* Small fix.
* Small fix.
* Some fixes.
* Some changes.
* Now TF Roll is read as TFRoll. Written inserting Transposes before and after (I)DFT.
* Small fix.
* Written tests for the transformation TFRollToRoll.
* Added comments to some transformations.
* Deleted redundant import.
* Written tests for the transformation TransposeDFT.
* Fixes in MO IR Reader to read/write (I)DFT.
* Fixes in the list of supported TF layers.
* Started to write tests for SSliceComplexRolledFFTPackBlockReplacement transformation.
* Written tests for the MO transformation SSliceComplexRolledFFTPackBlockReplacement.
* Written tests for the MO transformation ComplexAbs.
* Tests for transformations were moved into unit_tests directory.
* All extractors for (I)FFTxD are in one file now.
* Deleted redundant transformations.
* Fixed extractor for TF Roll: now this operation is read as MO Roll.
* Added comments to TFFFT operation.
* The method insert_transpose of classes TransposeDFT and LayoutChangeForGatherND was moved into the separate function in the file model-optimizer/extensions/middle/InsertLayoutPropagationTransposes.py.
* Fixed comment for the transformation TransposeDFT.
* Small fix.
* Some fixes.
* Deleted shape infer function for the operation TFFFT. Sorted imports in complex_abs.py.
* Small fixes.
* Deleted redundant import.
* Fixes in some asserts.
* Small fix.
* Added names for created nodes in the transformation ComplexAbs.
* Added comments to the method canonicalize_axes.
* The transformation SSliceComplexRolledFFTPackBlockReplacement was split into the sequence of transformations SSliceComplexRollReplacement -> RollRealImagPackReplacement -> TFFFTToDFT.
* Written tests for the transformation SSliceComplexRollReplacement.
* Written tests for the transformation RollRealImagPackReplacement.
* Written tests for the transformation TFFFTToDFT.
* Deleted commented code.
* Fixed types of constants in the transformation ComplexAbs.
* Written tests for canonicalization of signal_size value.
* Deleted 'Replacement' from names of files and classes.
* Used comarison of ids, not names.
* replace_sub_graph was replaced with find_and_replace_pattern.
* Now the transformation RollRealImagPack is executed before running transformation model-optimizer/extensions/front/Pack.py.
* The body of the function create_dft_from_tffft is a part of the transformation TFFFTToDFT body now.
* Now method correct_roll_axes of classes RollRealImagPack and SSliceComplexRoll is moved to the function in mo/front/tf/graph_utils.py.
* Small changes.
* Added comment before mark_input_as_in_correct_layout(roll, 2).
* Now the functions correct_roll_axes generates sub-graph in the input port 2 of Roll.
* Corrected tests for the transformation SSliceComplexRoll.
* Corrected tests for the transformation RollRealImagPack.
* Deleted commented code.
* Some renaming.
* Added decomposition of the separate operation ComplexAbs (without Complex before it).
* Added comment to the transformation ComplexAbsAfterComplex.
* Optimized imports for the transformation TFFFTToDFT.
* The transformation SSliceComplexRoll was split into the sequence SSliceComplex -> CorrectRollAxes and disabled.
* Written tests for the transformation ComplexAbs.
* Written tests for the transformation SSliceComplex.
* Written tests for the transformation CorrectRollAxes.
* Deleted the transformation SSliceComplexRoll.
* Deleted renaming nodes.
* Fixed comment.
* Small fixes.
* Small fix.
* The attribute need_correction was renamed as input_rank_changed.
* Small fixes.
* Deleted commented code.
* Now we iterate over all complex_node.out_port(0).get_connection().get_destinations() input ports and mark the corresponding nodes with the marker attribute.
* Added the attribute 'in_ports_count' into the class FFTBase.
* Tests for the transformation TransposeDFT were rewritten using helper functions.
* Now the transformation RollRealImagPack uses existing Roll node instead of creating new one.
* Small fixes.
* Fix in the documentation.
* Written class to read MxNet (I)FFT operations. Written corresponding extractors.
* Corrected shape infer function for MXFFT operation. Written transformation to convert MXFFT to (I)DFT.
* Fixed shape infer function.
* Fixed the conversion MXFFT to (I)DFT.
* Written tests for the transformation MXFFTToDFT.
* The function correct_roll_axes was replaced with more generic function add_constant_to_negative_values.
* Fixes in classes TFFFT, FFTBase, DFT, IDFT, MXFFT.
* Added asserts in constructors of operations TFFFT and MXFFT.
* Refactored transformation MXFFTToDFT: conversion of DFT and IDFT were moved into separated functions.
* Moved some commented code.
* Fixed BOM file.
* Written function convert_ifft_to_dft.
* Started to rewrite tests for MXFFTToDFT transformations, in the case is_inverse=False.
* Small fixes.
* Fixes in the transformation RollRealImagPack.
* Renaming tests class for the transformation SSliceComplex.
* Fixes in the function compare_graphs. Now we get all output nodes of op node, and these output nodes are sorted by names.
* Fixed tests for the transformation MXFFTToDFT.
* Fix in the transformation ThresholdedReluDecomposition: added disconnect for trelu input port.
* Fixes in test for the transformation TFSliceToSlice.
* Small fix in the transformation ObjectDetectionAPIPreprocessor2Replacement.
* Small fix in comment.
* Optimized imports.
* Used remove_node in the transformation ThresholdedReluDecomposition and remove_nodes_from in the transformation RollRealImagPack, instead of ports disconnection.
* Deleted commented code.
* Deleted test case test_slice_replacer_begin_with_2_inputs.
* Removed transformation which removes Const->Result sub-graphs
* Removed one more MO transformation which removes Const->Result sub-graph during the front phase
* initial changes (IR not generated)
* extractor fix
* convert tdnnf (with correct infer)
* refactoring + comments in code
* added unit tests + couple fixes based on tests
* change order for old convolutions
* fix pylint
* small refactoring
* added if to remove changes in old irs
* doc updated
* fix layout and kernel shapes for old convolutions
* fixed test
* moved test
* fix import in test
* fixed backward compatibility
* review fixes
* Removed test-generator from all MO requirement files except the dev one
* Moved all MO unit tests files to a separate directory
* Added __init__.py files to the tests directory. Fixed importing paths for some unit tests
* Fixed imports in all unit tests. Moved all unit test related files from the MO code to the dedicated directory
* Renamed directory with unit test utils
* Updated imports in unit tests
* Added operation Roll to MO.
* Updated BOM file.
* Replaced FrontReplacementPattern with FrontReplacementOp.
* Added set_input_permutation() to Roll infer function.
* Optimize imports.
* Code refactoring.
* Code refactoring.
* Removed unnecessary variable.
* Added name to the second reshape.
* Added rename_nodes to set original op name be at second reshape.
* Small fix.
* Add keep split output ports without consumers
* Fix ir reader for split outputs
* Update unit tests
* Refactoring code according to review
* Fix unit test
* Fix
* fix batch adding to init value of read value
* fix for batch in Kaldi models
* added broadcast to be able reshape in IE
* test fixes, added batch broadcasting to created constants
* pep fixes
* move all changes to 1 transformation
* added unit test and fix insertSelect transformation
* added comments
* remove unneeded params search
* fix element_size to send correct batch
* fix update batch in element_size
* couple fixes
* update BOM file
* fix review comments
* review fixes
* review fixes
* fix license headers
* Initial working solution
* moved bfs_search_apply_on_shapeof_subgraph_nodes from utils/graph.py to MarkShapeOfSubgraphDataType.py
* Reused bfs from MarkSubgraphsWithCorrectLayout.py
* fixed e2e precomit issues: specified correct const data_types, fixed BFS search staring point to avoid nodeless shapeof subgraphs
* fixed mxnet_rnnt: added converting all Const nodes in ShapeOf subgraph in MarkAndChangeDataTypeInShapeOfSubgraphs.py, revised Const values in transformations that affect ShapeOf subgraph nodes
* reverter ReverseV2ToReverseSequence.py and DecomposeBidirectionalRNNSequence.py
* in MarkSubgraphsWithCorrectLayout BFS search beauty applied
* apply review comments, returned back 'in_shape_subgraph' attribute
* graph condition added
* MO IR reader fix for mixed FP16 models, added replacer order placement comment
* moved to back phase
* new solution with marking nodes from bottom to top (WIP)
* successfully tested on back phase
* corrected unittest
* removed check for start nodes size in bfs
* fix transformations that insert f64 to f32 in shape subgraph
* corrected log.warning -> log.debug
* revised list if shape input operations added unittest for Const shape inputs
* applied @lazarevevgeny's comments
* licence head corrections
* [MO] Split iteration node for TensorIterator in case multiple consumers
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Implement additional BackEdgeTensorIterator and NonConstBeginStridedSlice transformations
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Finalize implementation of DIEN support by the MO tool
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Add unit test for NonConstBeginStridedSliceReplacement transformation
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Fix retrieving shrink_axis_mask attribute value
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Address the majority of review feedback
Signed-off-by: Roman Kazantsev <roman.kazantsev@intel.com>
* Do not run transformations for TF 2.X OD API models recursively (needed for models with Loop operation)
* Added anchor front transformation to group all TF OD API transformations. Added new necessary dependencies from KerasRNN transformations related to While support
* Added JSON configuration files for TF 2.4 OD API SSD and EfficientDet models
* Updated documentation with table of supported TF 2.x OD API models
* Improved visualization of the dependency graph
* Updated version of the pre-processing transformation for TF 2.4 OD API models
* Fixes in the TF 2.x OD API models conversion
* Fixed order of applying mean/scale values for TF 2.X OD API pre-processing
* Updates to the documentation
* Fixes for the preprocessor block transformation for the TF OD API models
* Added code comments
* Fixed bom file
* Unit tests for the TF 2.4 OD API ObjectDetectionAPIPreprocessor2Replacement transformation
* Code cleanup
* Updates to the documentation on how to convert TF OD API models and graph dumper
* Added assert to make sure that operations in the `get_specific_ops_with_const_inputs` has exactly 2 inputs
* Add ScatterElements value propogation
* Add condition for input nodes
* Add asserts
* Refactoring scatter according to review
* Add unit tests for 1d axis tensor
* Refactoring according to review
* refactoring unit test
* Refactoring according to review
* Update unit test
* Update unit test