Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
157 commits
Select commit Hold shift + click to select a range
0d68018
Double serialization
Nov 16, 2020
d10048a
Serialize-Read-Serialize
Nov 16, 2020
68635cd
Added loging
Nov 16, 2020
a85d90f
Fixed attribute visitors for AvgPool,MaxPool,NormalizeL2,PriorBoxClus…
Nov 18, 2020
319ad6d
Added interval propaation for MS5
Nov 18, 2020
1a98f0f
Added interaval based dynamic shape propagation
Nov 18, 2020
6354f8b
Boolean attributes support
Nov 18, 2020
0d7280e
Quick integration of ONNX importer to MO frontend instead of regular …
slyalin Nov 26, 2020
c47c1c1
Allow generating upper bounds for dynamic shapes in IR serialization …
slyalin Dec 3, 2020
1ec4df6
Hacks to reshape onnx-imported model without cuts
slyalin Dec 11, 2020
e5f6b27
Merged from master
slyalin Dec 11, 2020
487dced
Merge from master
slyalin Dec 14, 2020
fb5c077
Fix problematic string literal
slyalin Dec 14, 2020
dcbb0b6
Robust detection of new front-end mode
slyalin Dec 14, 2020
c20361e
Merge from master
slyalin Dec 14, 2020
e6f450c
Add PDPD python API POC
mvafin Jan 13, 2021
85e2c92
Initial c++ code
mvafin Jan 19, 2021
007f3ca
Fix build
mvafin Jan 20, 2021
92287ba
Fix codestyle
mvafin Jan 20, 2021
9438084
Fix build
mvafin Jan 20, 2021
a1319aa
Update requirements
mvafin Jan 21, 2021
0762f55
Fix issues and add serialization
mvafin Jan 25, 2021
11ad0b5
Test IR
mvafin Jan 26, 2021
0446814
Subgraph extraction in ONNX models
tomdol Jan 19, 2021
0c8a4f7
Windows compilation error fix + docs update
tomdol Feb 1, 2021
4a512fc
Code cleanup after the first round of reviews
tomdol Feb 1, 2021
49d2908
Merge remote-tracking branch 'upstream/master' into onnx_model_cutting
tomdol Feb 1, 2021
15bcb02
CI compilation error fix
tomdol Feb 1, 2021
fe7b3b1
Even more CI compilation error fixes
tomdol Feb 1, 2021
7e70fda
Proper usage of ADL in generic code
tomdol Feb 2, 2021
53667fa
ONNX shape inference related code cleanup
tomdol Feb 2, 2021
ddcffa3
Disable the onnx test utils when pb-lite is used
tomdol Feb 2, 2021
0078926
PB dependency removal from UT, strong types for input and output edge…
tomdol Feb 4, 2021
b2373e4
Merge remote-tracking branch 'upstream/master' into onnx_model_cutting
tomdol Feb 4, 2021
b8fb3bd
Fix for the protobuf descriptor database corruption
tomdol Feb 8, 2021
45d11e1
testing visibility changes
tomdol Feb 8, 2021
2d3e298
Revert the changes that didn't work
tomdol Feb 8, 2021
f2fdf5e
Make tests green again?
tomdol Feb 9, 2021
48b3cd4
Merge remote-tracking branch 'upstream/master' into onnx_model_cutting
tomdol Feb 9, 2021
92addf2
Make the current tests pass
tomdol Feb 9, 2021
59d7ef4
Remove the ONNX header from editor's tests
tomdol Feb 9, 2021
6eaee42
Switch from stable_partition to remove_if because of compiler bugs
tomdol Feb 10, 2021
0e7822f
Obsolete test removal and cmakelists cleanup in tests
tomdol Feb 11, 2021
985ef97
Macos failed, reverting some changes
tomdol Feb 11, 2021
263cd4b
Handle the multiple output consumers UC
tomdol Feb 11, 2021
1f18183
Keep the tensor name when replacing an initializer
tomdol Feb 11, 2021
9972ac0
Cutting a graph with multiple consumers of inputs and initializers
tomdol Feb 11, 2021
a39cbd0
Subgraph extraction with multiple initializer consumers
tomdol Feb 11, 2021
4b86f01
Merge remote-tracking branch 'upstream/master' into onnx_model_cutting
tomdol Feb 12, 2021
e490d8e
Merge from master
slyalin Feb 14, 2021
3263548
Now calling onnx_import through FE API placehodler. Keep pipeline fun…
slyalin Feb 17, 2021
7c710a6
Merge from openvino/master
slyalin Feb 17, 2021
7136af1
Merged from tomdol:onnx_model_cutting
slyalin Feb 17, 2021
f6ed37b
Rebased on new advances in ONNX editor class
slyalin Feb 22, 2021
aac48a7
Restored input cuting machinery with ONNX editor
slyalin Feb 23, 2021
31079bc
Better names and more comments
slyalin Feb 25, 2021
8013ddb
Technical merge FE API branch and PDPD POC branch
slyalin Feb 25, 2021
cfaf57d
Fixed PDPD C++ prototype functionality
slyalin Feb 26, 2021
1fdd30a
Cleanier code to call new FE API depending on framework
slyalin Feb 27, 2021
2e01eb5
Merge from main FE API branch
slyalin Feb 27, 2021
d16ed3d
Integrated PDPD PoC C++ code under FE API with immediate activation i…
slyalin Feb 27, 2021
ea73630
Added placehodler for TF frontend
slyalin Mar 9, 2021
4d0bdd4
Export TF FE classes from shared library
slyalin Mar 9, 2021
177cea7
Start migration of tf bridge code with tf-to-ngraph conversion to OV …
slyalin Mar 12, 2021
998dbe7
Moving forward with TF/proto decoder implemenation: placehoder class …
slyalin Mar 15, 2021
c22f505
Generate pdpd proto src/hdr files automatically in cmake
slyalin Mar 15, 2021
7796bab
Rename NodeWrapper to TFNodeDecoder
slyalin Mar 18, 2021
ed4c612
More documentation for Front-end API
slyalin Mar 23, 2021
67ede6a
Fixed overloaded pybind11 definition
slyalin Mar 23, 2021
2449fc3
Further progress with TF bridge code adoptation
slyalin Mar 23, 2021
4ac4bf5
introduce high-level api structs
Mar 11, 2021
2f76de0
added EdgeMapper
Mar 18, 2021
96a1676
Added handling OutputEdge
Mar 22, 2021
cb7a09b
error handling + code refactor
Mar 22, 2021
d402986
Error handling + using with model cutter tests
Mar 22, 2021
d49bdc2
added editor class aliases
Mar 22, 2021
b49a576
Move edge mapper to separate file
Mar 22, 2021
fa7e956
find dupicates with the same names
Mar 23, 2021
0573624
handling ambiguous node names for InputEdge + tests
Mar 24, 2021
601d007
handling ambiguous node names for OutputEdge + tests
Mar 24, 2021
7e68613
remove diagnostic logs
Mar 24, 2021
81f11b9
added documentation to new structs
Mar 24, 2021
e6a4d8b
EdgeMapper documentation
Mar 24, 2021
00c02a6
Complete the next step of porting of TF Bridge conversion code: succe…
slyalin Mar 24, 2021
5f18b78
Merge remote-tracking branch 'upstream/master' into mbencer/OnnxEdito…
Mar 24, 2021
1c6db0a
Disabled/removed most of the debugging output; enabled setting shape …
slyalin Mar 25, 2021
7bdca9f
Added transpose sinking and constant folding as a mandatory steps in …
slyalin Mar 25, 2021
d50596e
Merge from tensorflow_frontend
slyalin Mar 25, 2021
47f739b
Retarget benchmark_app to PDPD for debugging
slyalin Mar 25, 2021
041774b
Merge remote-tracking branch 'upstream/master' into mbencer/OnnxEdito…
Mar 25, 2021
5a41888
Separate pdpd frontend from generic part
slyalin Mar 25, 2021
7d72156
Merge remote-tracking branch 'upstream/master' into mbencer/OnnxEdito…
Mar 25, 2021
e213691
review remarks
Mar 25, 2021
424fada
Reorganized pdpd directory structure: finer grained file structure
slyalin Mar 25, 2021
649f4f3
Fix MO code for empty input_shape cmd line argument
slyalin Mar 25, 2021
3c316bb
Switch ONNX Importer to 'decode' mode where no real op conversion hap…
slyalin Mar 28, 2021
0d6b436
Implement the second round of conversion from ONNXNode
slyalin Mar 29, 2021
9fa8922
Code documentation improvement after code review
Mar 29, 2021
8b2bc1e
style fix
Mar 29, 2021
9527f42
changed edge mapper names convention
Mar 29, 2021
631970d
Merge with the latest changes in FE API, added more commens, code sni…
slyalin Mar 29, 2021
7a3c669
review remarks
Mar 29, 2021
53e8f7f
Merge remote-tracking branch 'upstream/master' into mbencer/OnnxEdito…
Mar 29, 2021
9ca76f0
new style of copyright applied to edge mapper
Mar 29, 2021
0b02c2e
Introduce new find_output_edge overload.
Mar 29, 2021
19e8617
Apply suggestions from code review
Mar 30, 2021
43fffe2
Reorganized PDPD FE to unlock independent ops enabling
slyalin Mar 30, 2021
703aec5
make EdgeMapper a proxy object
Mar 31, 2021
151b1dc
Removed Input, Output, Node aliases
Mar 31, 2021
95988ef
FronEndManager - private implementation
nosovmik Mar 31, 2021
3e3e9e3
Extended NodeContext with get_ng_input_size and get_ng_inputs for mul…
slyalin Mar 31, 2021
e4dffcc
added updating mapper
Apr 1, 2021
011fcbd
Merge remote-tracking branch 'upstream/master' into mbencer/OnnxEdito…
Apr 1, 2021
bf6324f
Code cleanup
nosovmik Apr 1, 2021
658ae1e
Merge pull request #4 from nosovmik/mnosov/reader
slyalin Apr 1, 2021
58d3433
Merge remote-tracking branch 'upstream/master' into mnosov/rebase1
nosovmik Apr 1, 2021
758f627
Read composed weights model
mvafin Apr 1, 2021
d941281
fix build issues after rebase
nosovmik Apr 1, 2021
40d0742
Merge remote-tracking branch 'upstream/master' into mbencer/OnnxEdito…
Apr 1, 2021
9bcdf79
Unify reading
mvafin Apr 2, 2021
45a45cf
Make benchmark app working again
nosovmik Apr 2, 2021
fd64d1d
Merge pull request #6 from mvafin/mvafin/composed_weights
slyalin Apr 2, 2021
616a933
hello_classification - add example of pdpd
nosovmik Apr 2, 2021
87e3994
Merge pull request #5 from nosovmik/mnosov/rebase1
slyalin Apr 5, 2021
ac1b239
Merge from pdpd_frontend that brings the latest changes from openvino…
slyalin Apr 5, 2021
368c8d3
Merged from new PR with onnx_editor extensions; adopt existing code t…
slyalin Apr 6, 2021
53dabc6
Introduced find_output_consumers
Apr 7, 2021
d990628
hide m_edge_mapper using pimpl
Apr 7, 2021
186be2e
make find_* methods const
Apr 7, 2021
b394430
Merge remote-tracking branch 'upstream/master' into mbencer/OnnxEdito…
Apr 7, 2021
3ffdb48
introduced is_correct_and_unambiguous_node method
Apr 7, 2021
241881c
Merge remote-tracking branch 'upstream/master' into mbencer/OnnxEdito…
Apr 7, 2021
2ff3c6d
Small test scenariou update in benchmark_app for subgraph extracting …
slyalin Apr 7, 2021
641d6a9
separate node names and node output names
Apr 8, 2021
40253ce
Merged from master with appropriate modifications; benchmark_app is n…
slyalin Apr 8, 2021
23d840a
Fixed stupid error that prevented benchmark_app from correct build
slyalin Apr 8, 2021
844a8d5
Added test cases for overriding input and outputs
slyalin Apr 8, 2021
aa4d7b6
Preserve the input names when extracting subgraphs
tomdol Apr 12, 2021
d6b5461
Merge remote-tracking branch 'upstream/master' into onnx_editor_inputs
tomdol Apr 13, 2021
87f26d8
Additional tests formatting
tomdol Apr 13, 2021
6b54ce0
Merge remote-tracking branch 'upstream/master' into onnx_editor_inputs
tomdol Apr 13, 2021
34e76ab
Merge remote-tracking branch 'upstream/master' into onnx_editor_inputs
tomdol Apr 13, 2021
385657a
Merge remote-tracking branch 'upstream/master' into mbencer/OnnxEdito…
Apr 13, 2021
4c25b18
Merge from master
slyalin Apr 16, 2021
b771477
Merged fixes for onnx editor and adopt the rest of the code to latest…
slyalin Apr 16, 2021
366b980
Removed dependency on pdpd and tensorflow
slyalin Apr 16, 2021
4c85c20
WIP port decoding in MO
slyalin Apr 19, 2021
5915880
Merge remote-tracking branch 'upstream/master' into mbencer/OnnxEdito…
Apr 26, 2021
9fe7665
Merge remote-tracking branch 'upstream/master' into mbencer/OnnxEdito…
May 5, 2021
3de2a71
apply new compiler rules
May 5, 2021
d0d094e
Use index ports instead of tensor names
May 5, 2021
1036cfa
refactor + comments improvement
May 6, 2021
bf514d4
Merged from working onnx editor branch
slyalin May 6, 2021
8b0f0ac
Merged from master
slyalin May 7, 2021
22afa62
Switched scenario to 'cut and setPartialShape'
slyalin May 7, 2021
a79810e
Merged another update for ONNX editor for multiple edge identification
slyalin May 7, 2021
6b86528
Merged from mbencer/mbencer/OnnxEditorPortIdx and modified existing c…
slyalin May 12, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ function(build_ngraph)
set(SDL_cmake_included ON)
add_subdirectory(ngraph)
set(NGRAPH_LIBRARIES ngraph PARENT_SCOPE)
set(FRONTEND_LIBRARIES frontend_manager PARENT_SCOPE)
set(NGRAPH_REF_LIBRARIES ngraph_reference PARENT_SCOPE)
endfunction()

Expand Down
4 changes: 2 additions & 2 deletions inference-engine/samples/benchmark_app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ file (GLOB HDR ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp)
ie_add_sample(NAME benchmark_app
SOURCES ${SRC}
HEADERS ${HDR}
DEPENDENCIES format_reader ie_samples_utils
OPENCV_DEPENDENCIES core)
DEPENDENCIES format_reader ie_samples_utils frontend_manager
OPENCV_DEPENDENCIES imgcodecs)

76 changes: 75 additions & 1 deletion inference-engine/samples/benchmark_app/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
#include <vector>
#include <vpu/vpu_plugin_config.hpp>

#include <frontend_manager/frontend_manager.hpp>

#include "benchmark_app.hpp"
#include "infer_request_wrap.hpp"
#include "inputs_filling.hpp"
Expand Down Expand Up @@ -338,7 +340,79 @@ int main(int argc, char* argv[]) {
slog::info << "Loading network files" << slog::endl;

auto startTime = Time::now();
CNNNetwork cnnNetwork = ie.ReadNetwork(FLAGS_m);

//////////////////////////////////////////////////////////////

//CNNNetwork cnnNetwork = ie.ReadNetwork(FLAGS_m);

ngraph::frontend::FrontEndManager manager;
auto FE = manager.loadByFramework("onnx");
auto inputModel = FE->loadFromFile(FLAGS_m);

int test_scenario = 2;

// The next test cases are applicable for resnet50-v1-7.onnx model from the official repository

switch (test_scenario) {
case 0: {
inputModel->setPartialShape(inputModel->getInputs()[0], ngraph::PartialShape({10, 3, 224, 224}));
break;
}
case 1: {
auto new_input = inputModel->getPlaceByTensorName("resnetv17_conv0_fwd");
inputModel->overrideAllInputs({inputModel->getPlaceByTensorName("resnetv17_conv0_fwd")});
break;
}
case 2: {
auto new_input = inputModel->getPlaceByTensorName("resnetv17_conv0_fwd");
inputModel->overrideAllInputs({new_input});
inputModel->setPartialShape(new_input, ngraph::PartialShape({2, 64, 112, 112}));
break;
}
case 3: {
auto new_input = inputModel->getPlaceByTensorName("resnetv17_conv0_fwd");
inputModel->setPartialShape(new_input, ngraph::PartialShape({2, 64, 112, 112}));
inputModel->overrideAllInputs({new_input});
break;
}
case 4: {
auto new_input = inputModel->getPlaceByTensorName("resnetv17_conv0_fwd");
inputModel->setPartialShape(new_input, ngraph::PartialShape({2, 64, 112, 112}));
inputModel->overrideAllInputs({new_input});
break;
}
case 5: {
// Multiple consumers for a tensor, should be converted to a single Parameter
auto new_input = inputModel->getPlaceByTensorName("resnetv17_pool0_fwd");
inputModel->overrideAllInputs({new_input});
break;
}
case 6: {
// Split usages of a tensor to two Parameters; using ports instead of tensors
auto new_input = inputModel->getPlaceByTensorName("resnetv17_pool0_fwd");
auto ports = new_input->getConsumingPorts();
inputModel->overrideAllInputs({ports[0], ports[1]}); // it is known there are two ports
break;
}
case 7: {
auto new_output_1 = inputModel->getPlaceByTensorName("resnetv17_stage1_conv2_fwd");
auto new_output_2 = inputModel->getPlaceByTensorName("resnetv17_stage1_conv3_fwd");
inputModel->overrideAllOutputs({new_output_1, new_output_2});
break;
}
}

#if 1 // Complete convert
auto ngFunc = FE->convert(inputModel);
#else // Decode first, than finalize conversion -- should give identical to simple `convert` result
auto ngFunc = FE->decode(inputModel);
FE->convert(ngFunc);
#endif
CNNNetwork cnnNetwork(ngFunc);
cnnNetwork.serialize("benchmark_app_loaded_network.xml");

/////////////////////////////////////////////////////////////

auto duration_ms = double_to_string(get_total_ms_time(startTime));
slog::info << "Read network took " << duration_ms << " ms" << slog::endl;
if (statistics)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@

ie_add_sample(NAME hello_classification
SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp"
DEPENDENCIES ie_samples_utils
DEPENDENCIES ie_samples_utils frontend_manager
OPENCV_DEPENDENCIES core imgcodecs)

1 change: 0 additions & 1 deletion inference-engine/samples/hello_classification/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,6 @@ int main(int argc, char* argv[]) {
DataPtr output_info = network.getOutputsInfo().begin()->second;
std::string output_name = network.getOutputsInfo().begin()->first;

output_info->setPrecision(Precision::FP32);
// -----------------------------------------------------------------------------------------------------

// --------------------------- Step 4. Loading a model to the device
Expand Down
2 changes: 1 addition & 1 deletion inference-engine/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,5 @@ add_custom_target(ie_libraries ALL
inference_engine_lp_transformations inference_engine_snippets)

if(NGRAPH_ONNX_IMPORT_ENABLE)
add_dependencies(ie_libraries inference_engine_onnx_reader)
add_dependencies(ie_libraries inference_engine_onnx_reader frontend_manager)
endif()
3 changes: 2 additions & 1 deletion inference-engine/src/inference_engine/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ target_compile_definitions(${TARGET_NAME}_obj PRIVATE IMPLEMENT_INFERENCE_ENGINE
$<TARGET_PROPERTY:ngraph::ngraph,INTERFACE_COMPILE_DEFINITIONS>)

target_include_directories(${TARGET_NAME}_obj SYSTEM PRIVATE $<TARGET_PROPERTY:ngraph::ngraph,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:ngraph::frontend_manager,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:pugixml,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:xbyak,INTERFACE_INCLUDE_DIRECTORIES>)

Expand Down Expand Up @@ -162,7 +163,7 @@ if (TBBBIND_2_4_FOUND)
endif()

target_link_libraries(${TARGET_NAME} PRIVATE pugixml openvino::itt ${CMAKE_DL_LIBS} Threads::Threads
${NGRAPH_LIBRARIES} inference_engine_transformations)
${NGRAPH_LIBRARIES} ${FRONTEND_LIBRARIES} inference_engine_transformations)

target_include_directories(${TARGET_NAME} INTERFACE ${PUBLIC_HEADERS_DIR}
PRIVATE $<TARGET_PROPERTY:${TARGET_NAME}_plugin_api,INTERFACE_INCLUDE_DIRECTORIES>
Expand Down
2 changes: 2 additions & 0 deletions inference-engine/src/inference_engine/ie_core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <ngraph/ngraph.hpp>
#include <ngraph/graph_util.hpp>
#include <ngraph/pass/constant_folding.hpp>
#include <frontend_manager/frontend_manager.hpp>

#include "compilation_context.hpp"
#include "ie_plugin_cpp.hpp"
Expand Down Expand Up @@ -207,6 +208,7 @@ class Core::Impl : public ICore {

std::unordered_set<std::string> opsetNames;
std::vector<IExtensionPtr> extensions;
//ngraph::frontend::FrontEndManager frontEndManager;

std::map<std::string, PluginDescriptor> pluginRegistry;
mutable std::mutex pluginsMutex; // to lock parallel access to pluginRegistry and plugins
Expand Down
35 changes: 27 additions & 8 deletions inference-engine/src/inference_engine/xml_parse_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,23 @@

#include "ie_precision.hpp"

template <typename T>
bool is_bool_value(const std::string & str, T & val) {
std::string tmp;
for (const auto ch : str) {
tmp += std::tolower(ch);
}
if (tmp == "true") {
val = 1;
return true;
}
if (tmp == "false") {
val = 0;
return true;
}
return false;
}

int XMLParseUtils::GetIntAttr(const pugi::xml_node& node, const char* str) {
auto attr = node.attribute(str);
if (attr.empty())
Expand All @@ -20,10 +37,11 @@ int XMLParseUtils::GetIntAttr(const pugi::xml_node& node, const char* str) {
std::string str_value = std::string(attr.value());
std::size_t idx = 0;
int int_value = std::stoi(str_value, &idx, 10);
if (idx != str_value.length())
IE_THROW() << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value
<< "\" which is not an integer"
<< " at offset " << node.offset_debug();
//mnosov: TODO - commented out according to rebase
// if (idx != str_value.length())
// IE_THROW() << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value
// << "\" which is not an integer"
// << " at offset " << node.offset_debug();
return int_value;
}

Expand Down Expand Up @@ -65,10 +83,11 @@ unsigned int XMLParseUtils::GetUIntAttr(const pugi::xml_node& node, const char*
std::string str_value = std::string(attr.value());
std::size_t idx = 0;
long long int_value = std::stoll(str_value, &idx, 10);
if (idx != str_value.length() || int_value < 0 || int_value > (std::numeric_limits<unsigned int>::max)())
IE_THROW() << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value
<< "\" which is not an unsigned integer"
<< " at offset " << node.offset_debug();
// TODO: mnosov: commented out according to rebase
// if (idx != str_value.length() || int_value < 0 || int_value > (std::numeric_limits<unsigned int>::max)())
// IE_THROW() << "node <" << node.name() << "> has attribute \"" << str << "\" = \"" << str_value
// << "\" which is not an unsigned integer"
// << " at offset " << node.offset_debug();
return static_cast<unsigned int>(int_value);
}

Expand Down
2 changes: 2 additions & 0 deletions inference-engine/src/plugin_api/ie_ngraph_utils.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,8 @@ inline Precision convertPrecision(const ::ngraph::element::Type& precision) {
return Precision(Precision::BIN);
case ::ngraph::element::Type_t::boolean:
return Precision(Precision::BOOL);
case ::ngraph::element::Type_t::dynamic:
return Precision(Precision::UNSPECIFIED);
default:
IE_THROW() << "Incorrect precision " << precision.get_type_name() << "!"; return{};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include <unordered_set>

#include <ngraph/variant.hpp>
#include <assert.h>
#include "ngraph/ops.hpp"
#include "ngraph/opsets/opset.hpp"
#include "ngraph/opsets/opset1.hpp"
Expand Down Expand Up @@ -502,6 +503,7 @@ std::string get_opset_name(
std::string get_precision_name(const ngraph::element::Type & elem_type) {
switch (elem_type) {
case ::ngraph::element::Type_t::undefined:
case ::ngraph::element::Type_t::dynamic:
return "UNSPECIFIED";
case ::ngraph::element::Type_t::f16:
return "FP16";
Expand Down Expand Up @@ -542,17 +544,6 @@ std::string get_precision_name(const ngraph::element::Type & elem_type) {
}
}

std::string escape_delim(const std::string& name, const char delim = ',') {
std::string result_name = name;
const std::string escaped_delim = std::string("\\") + delim;
size_t index = result_name.find(delim, 0);
while (index != std::string::npos) {
result_name.replace(index, 1, escaped_delim);
index = result_name.find(delim, index + 2);
}
return result_name;
}

std::string generate_unique_name(
const std::unordered_set<std::string>& unique_names, std::string base_name,
int suffix) {
Expand All @@ -565,6 +556,17 @@ std::string generate_unique_name(
}
}

std::string escape_delim(const std::string& name, const char delim = ',') {
std::string result_name = name;
const std::string escaped_delim = std::string("\\") + delim;
size_t index = result_name.find(delim, 0);
while (index != std::string::npos) {
result_name.replace(index, 1, escaped_delim);
index = result_name.find(delim, index + 2);
}
return result_name;
}

// TODO: remove when CNNNetwork will be supporting not-unique names
std::string get_node_unique_name(std::unordered_set<std::string>& unique_names,
const ngraph::Node* n) {
Expand Down Expand Up @@ -721,9 +723,6 @@ void ngfunction_2_irv10(pugi::xml_node& netXml,
if (node->get_input_size() > 0) {
pugi::xml_node input = layer.append_child("input");
for (const auto & i : node->inputs()) {
NGRAPH_CHECK(i.get_partial_shape().is_static(),
"Unsupported dynamic input shape in ", node);

// WA for LSTMCellv0, peephole input shall not be serialized
if (i.get_index() == 6 && dynamic_cast<opset1::LSTMCell *>(node)) {
port_id++;
Expand All @@ -734,10 +733,10 @@ void ngfunction_2_irv10(pugi::xml_node& netXml,
port.append_attribute("id").set_value(port_id++);
port.append_attribute("precision")
.set_value(get_precision_name(i.get_element_type()).c_str());
for (auto d : i.get_shape()) {
for (auto d : std::vector<Dimension>(i.get_partial_shape())) {
pugi::xml_node dim = port.append_child("dim");
dim.append_child(pugi::xml_node_type::node_pcdata)
.set_value(std::to_string(d).c_str());
.set_value(std::to_string(d.get_max_length()).c_str());
}
}

Expand Down Expand Up @@ -765,10 +764,10 @@ void ngfunction_2_irv10(pugi::xml_node& netXml,
if (!names.empty()) {
port.append_attribute("names").set_value(names.c_str());
}
for (auto d : o.get_shape()) {
for (auto d : std::vector<Dimension>(o.get_partial_shape())) {
pugi::xml_node dim = port.append_child("dim");
dim.append_child(pugi::xml_node_type::node_pcdata)
.set_value(std::to_string(d).c_str());
.set_value(std::to_string(d.get_max_length()).c_str());
}
}
if (node_type_name == "TensorIterator" || node_type_name == "Loop") {
Expand Down
7 changes: 7 additions & 0 deletions model-optimizer/extensions/front/user_data_repack.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,10 @@ def find_and_replace_pattern(self, graph: Graph):
inputs = list(packed_user_shapes.keys()) \
if packed_user_shapes is not None and isinstance(packed_user_shapes, dict) else None
graph.graph['inputs'] = inputs # save user defined inputs for other extensions

print('---------- Inputs/outpus -----------')
print(packed_user_shapes)
print(packed_outputs)
print(freeze_placeholder)
print(inputs)
print('------------------------------------')
Loading