LSTMCell/Sequence v1, reference implementations and decompose transformations for...
authorIvan Tikhonov <ivan.tikhonov@intel.com>
Fri, 4 Sep 2020 06:04:36 +0000 (09:04 +0300)
committerGitHub <noreply@github.com>
Fri, 4 Sep 2020 06:04:36 +0000 (09:04 +0300)
commit2f5a28d44f1fc8e866e587121ea88dd3f711dc8e
treea2bec8b188f567fd6d16b327534ccfc11dbb198d
parent28eed7708e76dfa605f3078935244527d783d0ac
LSTMCell/Sequence v1, reference implementations and decompose transformations for LSTM/GRU/RNN Cells (#2000)

* validate_and_infer_types() implementation

* input parameter validation for LSTM, GRU and RNN

* style-check applied

* Add LSTMSequence dynamic shape validation and test props for RNNCell, GRUCell, LSTMCell and LSTMSequence.

* recurrent_sequence.hpp moved to ngraph/core/include/ngraph/op/util/

* style check applied

* removed unused variable from LSTMSequence::validate_and_infer_types

* Add missing newline mark at the end of file.

* Add supression macro for FusedOp deprecation.

* Add element type initialization

* transpose,rnn cell reference implementations

* Apply PR review remarks

* reference implementations for cells op, single layer tests, align lstm cell/sequence according to the spec

* lstm/gru/rnn cell decompostion transformations

* ngraph codestyle

* clean up

* ngraph code style

* change inheritance of Cells, fix build

* fix build

* fix build again

* remove Peepholes from LSTMSeq, fix copy_runtime_info in transformations

* Rewrite tests to use gtest exception assertions.

* resolve tests issues

* ngraph codestyle

* add missed files

* fix typeprop tests

* fix lstm sequence checks

* fix arm build

* fix arm again

* delete unnecessary file

* add convert weghts format function, enable lstm test, resolve review comments

* add ngraph builders

* ngraph codestyle

* fix unit tests

* revert transpose reference implementation

* revert LSTM Cell v0, add LSTMCell v1, update transformation lstm_cell_to_cell_ie

* v1 version of LSTMCell op

* LSTMSequence v1 operation, exclude LSTMSeq from opset4

* fix python api tests

* resolve review comments, tests for decomposition transformations, switch lstm cell to opset4 in mo

Co-authored-by: Szymon Durawa <szymon.durawa@intel.com>
65 files changed:
inference-engine/src/legacy_api/src/convert_function_to_cnn_network.cpp
inference-engine/src/legacy_api/src/ie_cnn_layer_builder_ngraph.cpp
inference-engine/src/readers/ir_reader/ie_ir_parser.cpp
inference-engine/src/transformations/include/ngraph_ops/lstm_cell_ie.hpp
inference-engine/src/transformations/include/transformations/gru_cell_decomposition.hpp [new file with mode: 0644]
inference-engine/src/transformations/include/transformations/lstm_cell_decomposition.hpp [new file with mode: 0644]
inference-engine/src/transformations/include/transformations/rnn_cell_decomposition.hpp [new file with mode: 0644]
inference-engine/src/transformations/include/transformations/utils/utils.hpp
inference-engine/src/transformations/src/ngraph_ops/lstm_cell_ie.cpp
inference-engine/src/transformations/src/transformations/convert_opset1_to_legacy/convert_cells_to_cells_ie.cpp
inference-engine/src/transformations/src/transformations/gru_cell_decomposition.cpp [new file with mode: 0644]
inference-engine/src/transformations/src/transformations/lstm_cell_decomposition.cpp [new file with mode: 0644]
inference-engine/src/transformations/src/transformations/rnn_cell_decomposition.cpp [new file with mode: 0644]
inference-engine/src/transformations/src/transformations/utils/utils.cpp
inference-engine/tests/functional/inference_engine/ngraph_reader/ti.cpp
inference-engine/tests/functional/inference_engine/transformations/convert_cells_to_cells_ie_test.cpp
inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/gru_cell.cpp [new file with mode: 0644]
inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/lstm_cell.cpp [new file with mode: 0644]
inference-engine/tests/functional/plugin/cpu/shared_tests_instances/single_layer_tests/rnn_cell.cpp [new file with mode: 0644]
inference-engine/tests/functional/plugin/shared/include/single_layer_tests/gru_cell.hpp [new file with mode: 0644]
inference-engine/tests/functional/plugin/shared/include/single_layer_tests/lstm_cell.hpp [new file with mode: 0644]
inference-engine/tests/functional/plugin/shared/include/single_layer_tests/rnn_cell.hpp [new file with mode: 0644]
inference-engine/tests/functional/plugin/shared/src/single_layer_tests/gru_cell.cpp [new file with mode: 0644]
inference-engine/tests/functional/plugin/shared/src/single_layer_tests/lstm_cell.cpp [new file with mode: 0644]
inference-engine/tests/functional/plugin/shared/src/single_layer_tests/rnn_cell.cpp [new file with mode: 0644]
inference-engine/tests/functional/plugin/shared/src/subgraph_tests/basic_lstm.cpp
inference-engine/tests/ngraph_functions/include/ngraph_functions/builders.hpp
inference-engine/tests/ngraph_functions/include/ngraph_functions/subgraph_builders.hpp
inference-engine/tests/ngraph_functions/src/gru_cell.cpp [new file with mode: 0644]
inference-engine/tests/ngraph_functions/src/lstm_cell.cpp [new file with mode: 0644]
inference-engine/tests/ngraph_functions/src/rnn_cell.cpp [new file with mode: 0644]
model-optimizer/extensions/ops/lstm_cell.py
ngraph/core/include/ngraph/op/gru_cell.hpp
ngraph/core/include/ngraph/op/lstm_cell.hpp
ngraph/core/include/ngraph/op/lstm_sequence.hpp
ngraph/core/include/ngraph/op/rnn_cell.hpp
ngraph/core/include/ngraph/op/util/rnn_cell_base.hpp
ngraph/core/include/ngraph/opsets/opset4_tbl.hpp
ngraph/core/reference/include/ngraph/runtime/reference/gru_cell.hpp [new file with mode: 0644]
ngraph/core/reference/include/ngraph/runtime/reference/lstm_cell.hpp [new file with mode: 0644]
ngraph/core/reference/include/ngraph/runtime/reference/rnn_cell.hpp [new file with mode: 0644]
ngraph/core/reference/include/ngraph/runtime/reference/split.hpp [new file with mode: 0644]
ngraph/core/reference/src/runtime/reference/split.cpp [new file with mode: 0644]
ngraph/core/src/op/gru_cell.cpp
ngraph/core/src/op/lstm_cell.cpp
ngraph/core/src/op/lstm_sequence.cpp
ngraph/core/src/op/rnn_cell.cpp
ngraph/core/src/op/split.cpp
ngraph/core/src/op/util/rnn_cell_base.cpp
ngraph/frontend/onnx_import/src/op/lstm.cpp
ngraph/python/src/ngraph/opset4/__init__.py
ngraph/python/src/ngraph/opset4/ops.py
ngraph/python/tests/test_ngraph/test_create_op.py
ngraph/test/attributes.cpp
ngraph/test/backend/fused_op.in.cpp
ngraph/test/op_is.cpp
ngraph/test/runtime/ie/unit_test.manifest
ngraph/test/runtime/interpreter/int_executable.hpp
ngraph/test/runtime/interpreter/opset_int_tbl.hpp
ngraph/test/runtime/interpreter/unit_test.manifest
ngraph/test/runtime/opset0_tbl.hpp
ngraph/test/type_prop/gru_cell.cpp
ngraph/test/type_prop/lstm_cell.cpp
ngraph/test/type_prop/lstm_sequence.cpp
ngraph/test/type_prop/rnn_cell.cpp