Visitor API deserialization - create models for ops (#2889)

* add tests for 11 operators, which compare V7 and V10 version of the model optimizer

* add test for space_to_depth model
This commit is contained in:
Bartek Szmelczynski 2020-11-02 11:48:53 +01:00 committed by GitHub
parent fea2595aed
commit 8e01022252
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 1682 additions and 0 deletions

View File

@ -0,0 +1,89 @@
// Copyright (C) 2018-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadConvertNetwork) {
std::string model = R"V0G0N(
<net name="saved_model" version="10">
<layers>
<layer id="0" name="input_a" type="Parameter" version="opset1">
<data shape="1,3,4" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="PartitionedCall/functional_1/tf_op_layer_Cast/Cast" type="Convert" version="opset1">
<data destination_type="f16"/>
<input>
<port id="0">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
</input>
<output>
<port id="1" precision="FP16">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="2" name="Identity/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="1" to-port="0"/>
<edge from-layer="1" from-port="1" to-layer="2" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="saved_model" version="7">
<layers>
<layer id="0" name="input_a" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="PartitionedCall/functional_1/tf_op_layer_Cast/Cast" type="Convert" version="opset1">
<data precision="FP16"/>
<input>
<port id="0">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
</input>
<output>
<port id="1" precision="FP16">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
</output>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="1" to-port="0"/>
</edges>
</net>
)V0G0N";
compareIRs(model, modelV7, 0);
}

View File

@ -0,0 +1,184 @@
// Copyright (C) 2019-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadDepthToSpaceNetwork) {
std::string model = R"V0G0N(
<net name="saved_model" version="10">
<layers>
<layer id="0" name="input_a" type="Parameter" version="opset1">
<data shape="5,4,28,2" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>5</dim>
<dim>4</dim>
<dim>28</dim>
<dim>2</dim>
</port>
</output>
</layer>
<layer id="1" name="PartitionedCall/functional_1/tf_op_layer_output/output" type="DepthToSpace" version="opset1">
<data mode="blocks_first" block_size="2"/>
<input>
<port id="0">
<dim>5</dim>
<dim>4</dim>
<dim>28</dim>
<dim>2</dim>
</port>
</input>
<output>
<port id="1" precision="FP32">
<dim>5</dim>
<dim>1</dim>
<dim>56</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="2" name="Identity/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>5</dim>
<dim>1</dim>
<dim>56</dim>
<dim>4</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="1" to-port="0"/>
<edge from-layer="1" from-port="1" to-layer="2" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="saved_model" version="7">
<layers>
<layer id="0" name="input_a" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>5</dim>
<dim>4</dim>
<dim>28</dim>
<dim>2</dim>
</port>
</output>
</layer>
<layer id="1" name="PartitionedCall/functional_1/tf_op_layer_output/output/Reshape_to_6D/Cast_1204_const" type="Const" version="opset1">
<output>
<port id="1" precision="I64">
<dim>6</dim>
</port>
</output>
<blobs>
<custom offset="0" size="24" precision="I64"/>
</blobs>
</layer>
<layer id="2" name="PartitionedCall/functional_1/tf_op_layer_output/output/Reshape_to_6D" type="Reshape" version="opset1">
<data special_zero="True"/>
<input>
<port id="0">
<dim>5</dim>
<dim>4</dim>
<dim>28</dim>
<dim>2</dim>
</port>
<port id="1">
<dim>6</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>5</dim>
<dim>2</dim>
<dim>2</dim>
<dim>1</dim>
<dim>28</dim>
<dim>2</dim>
</port>
</output>
</layer>
<layer id="3" name="PartitionedCall/functional_1/tf_op_layer_output/output/Transpose" type="Permute" version="opset1">
<data order="0,3,4,1,5,2"/>
<input>
<port id="0">
<dim>5</dim>
<dim>2</dim>
<dim>2</dim>
<dim>1</dim>
<dim>28</dim>
<dim>2</dim>
</port>
</input>
<output>
<port id="1" precision="FP32">
<dim>5</dim>
<dim>1</dim>
<dim>28</dim>
<dim>2</dim>
<dim>2</dim>
<dim>2</dim>
</port>
</output>
</layer>
<layer id="4" name="PartitionedCall/functional_1/tf_op_layer_output/output/Reshape_to_4D/Cast_1202_const" type="Const" version="opset1">
<output>
<port id="1" precision="I64">
<dim>4</dim>
</port>
</output>
<blobs>
<custom offset="24" size="16" precision="I64"/>
</blobs>
</layer>
<layer id="5" name="PartitionedCall/functional_1/tf_op_layer_output/output" type="Reshape" version="opset1">
<data special_zero="True"/>
<input>
<port id="0">
<dim>5</dim>
<dim>1</dim>
<dim>28</dim>
<dim>2</dim>
<dim>2</dim>
<dim>2</dim>
</port>
<port id="1">
<dim>4</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>5</dim>
<dim>1</dim>
<dim>56</dim>
<dim>4</dim>
</port>
</output>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="1" to-layer="2" to-port="1"/>
<edge from-layer="2" from-port="2" to-layer="3" to-port="0"/>
<edge from-layer="3" from-port="1" to-layer="5" to-port="0"/>
<edge from-layer="4" from-port="1" to-layer="5" to-port="1"/>
</edges>
</net>
)V0G0N";
compareIRs(model, modelV7, 80, [](Blob::Ptr& weights) {
auto* buffer = weights->buffer().as<int64_t*>();
buffer[0] = 0;
buffer[1] = 2;
buffer[2] = 2;
buffer[3] = 1;
buffer[4] = 28;
buffer[5] = 2;
buffer[7] = 0;
buffer[7] = 1;
buffer[8] = 56;
buffer[9] = 4;
});
}

View File

@ -0,0 +1,179 @@
// Copyright (C) 2018-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadFloorModNetwork) {
std::string model = R"V0G0N(
<net name="saved_model" version="10">
<layers>
<layer id="0" name="input_a" type="Parameter" version="opset1">
<data shape="1,1,4" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="input_b" type="Parameter" version="opset1">
<data shape="1" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
</port>
</output>
</layer>
<layer id="2" name="EltwiseReshapeNormalization/Cast_163_const" type="Const" version="opset1">
<data offset="0" size="24" shape="3" element_type="i64"/>
<output>
<port id="1" precision="I64">
<dim>3</dim>
</port>
</output>
</layer>
<layer id="3" name="EltwiseReshapeNormalization" type="Reshape" version="opset1">
<data special_zero="True"/>
<input>
<port id="0">
<dim>1</dim>
</port>
<port id="1">
<dim>3</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>1</dim>
</port>
</output>
</layer>
<layer id="4" name="PartitionedCall/functional_1/tf_op_layer_output/output" type="FloorMod" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>1</dim>
<dim>1</dim>
<dim>1</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="5" name="Identity/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="1" from-port="0" to-layer="3" to-port="0"/>
<edge from-layer="2" from-port="1" to-layer="3" to-port="1"/>
<edge from-layer="0" from-port="0" to-layer="4" to-port="0"/>
<edge from-layer="3" from-port="2" to-layer="4" to-port="1"/>
<edge from-layer="4" from-port="2" to-layer="5" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="saved_model" version="7">
<layers>
<layer id="0" name="input_a" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="input_b" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
</port>
</output>
</layer>
<layer id="2" name="EltwiseReshapeNormalization/Cast_175_const" type="Const" version="opset1">
<output>
<port id="1" precision="I64">
<dim>3</dim>
</port>
</output>
<blobs>
<custom offset="0" size="12" precision="I32"/>
</blobs>
</layer>
<layer id="3" name="EltwiseReshapeNormalization" type="Reshape" version="opset1">
<data special_zero="True"/>
<input>
<port id="0">
<dim>1</dim>
</port>
<port id="1">
<dim>3</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>1</dim>
</port>
</output>
</layer>
<layer id="4" name="PartitionedCall/functional_1/tf_op_layer_output/output" type="Eltwise" version="opset1">
<data operation="floor_mod"/>
<input>
<port id="0">
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>1</dim>
<dim>1</dim>
<dim>1</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
</layers>
<edges>
<edge from-layer="1" from-port="0" to-layer="3" to-port="0"/>
<edge from-layer="2" from-port="1" to-layer="3" to-port="1"/>
<edge from-layer="0" from-port="0" to-layer="4" to-port="0"/>
<edge from-layer="3" from-port="2" to-layer="4" to-port="1"/>
</edges>
</net>
)V0G0N";
// compareIRs(model, modelV7, 0);
compareIRs(model, modelV7, 40, [](Blob::Ptr& weights) {
auto* buffer = weights->buffer().as<int64_t*>();
buffer[0] = 1;
buffer[1] = 1;
buffer[2] = 1;
});
}

View File

@ -0,0 +1,122 @@
// Copyright (C) 2018-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadGatherNetwork) {
std::string model = R"V0G0N(
<net name="saved_model" version="10">
<layers>
<layer id="0" name="input_a" type="Parameter" version="opset1">
<data shape="1,3,4" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="input_b" type="Parameter" version="opset1">
<data shape="1" element_type="i32"/>
<output>
<port id="0" precision="I32">
<dim>1</dim>
</port>
</output>
</layer>
<layer id="2" name="PartitionedCall/functional_1/tf_op_layer_GatherV2/GatherV2/Cast_292_const" type="Const" version="opset1">
<data offset="0" size="8" shape="" element_type="i64"/>
<output>
<port id="1" precision="I64"/>
</output>
</layer>
<layer id="3" name="PartitionedCall/functional_1/tf_op_layer_GatherV2/GatherV2" type="Gather" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>1</dim>
</port>
<port id="2"/>
</input>
<output>
<port id="3" precision="FP32">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="4" name="Identity/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="3" to-port="0"/>
<edge from-layer="1" from-port="0" to-layer="3" to-port="1"/>
<edge from-layer="2" from-port="1" to-layer="3" to-port="2"/>
<edge from-layer="3" from-port="3" to-layer="4" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="saved_model" version="7">
<layers>
<layer id="0" name="input_a" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="input_b" type="Input" version="opset1">
<output>
<port id="0" precision="I32">
<dim>1</dim>
</port>
</output>
</layer>
<layer id="2" name="PartitionedCall/functional_1/tf_op_layer_GatherV2/GatherV2" type="Gather">
<data axis="0"/>
<input>
<port id="0">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>1</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>3</dim>
<dim>4</dim>
</port>
</output>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
</edges>
</net>
)V0G0N";
compareIRs(model, modelV7, 16, [](Blob::Ptr& weights) {
auto* buffer = weights->buffer().as<int64_t*>();
buffer[0] = 0;
});
}

View File

@ -0,0 +1,190 @@
// Copyright (C) 2018-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadMinimumNetwork) {
std::string model = R"V0G0N(
<net name="saved_model" version="10">
<layers>
<layer id="0" name="input_a" type="Parameter" version="opset1">
<data shape="1,1,27,27" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</output>
</layer>
<layer id="1" name="input_b" type="Parameter" version="opset1">
<data shape="1,1,27,27" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</output>
</layer>
<layer id="2" name="PartitionedCall/functional_1/output/Minimum" type="Minimum" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
<port id="1">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</output>
</layer>
<layer id="3" name="Identity/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
<edge from-layer="2" from-port="2" to-layer="3" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="saved_model" version="7">
<layers>
<layer id="0" name="input_a" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</output>
</layer>
<layer id="1" name="PartitionedCall/functional_1/output/Minimum/negate1_" type="Power" version="opset1">
<data power="1" scale="-1" shift="0"/>
<input>
<port id="0">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</input>
<output>
<port id="1" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</output>
</layer>
<layer id="2" name="input_b" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</output>
</layer>
<layer id="3" name="PartitionedCall/functional_1/output/Minimum/negate2_" type="Power" version="opset1">
<data power="1" scale="-1" shift="0"/>
<input>
<port id="0">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</input>
<output>
<port id="1" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</output>
</layer>
<layer id="4" name="PartitionedCall/functional_1/output/Minimum/Max_" type="Eltwise" version="opset1">
<data operation="max"/>
<input>
<port id="0">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
<port id="1">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</output>
</layer>
<layer id="5" name="PartitionedCall/functional_1/output/Minimum" type="Power" version="opset1">
<data power="1" scale="-1" shift="0"/>
<input>
<port id="0">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</input>
<output>
<port id="1" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>27</dim>
<dim>27</dim>
</port>
</output>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="1" to-port="0"/>
<edge from-layer="2" from-port="0" to-layer="3" to-port="0"/>
<edge from-layer="1" from-port="1" to-layer="4" to-port="0"/>
<edge from-layer="3" from-port="1" to-layer="4" to-port="1"/>
<edge from-layer="4" from-port="2" to-layer="5" to-port="0"/>
</edges>
</net>
)V0G0N";
compareIRs(model, modelV7, 0);
}

View File

@ -0,0 +1,108 @@
// Copyright (C) 2018-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadMultiplyNetwork) {
std::string model = R"V0G0N(
<net name="saved_model" version="10">
<layers>
<layer id="0" name="input_a" type="Parameter" version="opset1">
<data shape="1,4" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="input_b" type="Parameter" version="opset1">
<data shape="1,4" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="2" name="PartitionedCall/functional_1/output/mul" type="Multiply" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>1</dim>
<dim>4</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="3" name="Identity/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>4</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
<edge from-layer="2" from-port="2" to-layer="3" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="saved_model" version="7">
<layers>
<layer id="0" name="input_a" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="input_b" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="2" name="PartitionedCall/functional_1/output/mul" type="Eltwise" version="opset1">
<data operation="prod"/>
<input>
<port id="0">
<dim>1</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>1</dim>
<dim>4</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
</edges>
</net>
)V0G0N";
compareIRs(model, modelV7, 0);
}

View File

@ -0,0 +1,146 @@
// Copyright (C) 2019-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadNormalizeL2Network) {
std::string model = R"V0G0N(
<net name="saved_model" version="10">
<layers>
<layer id="0" name="input_a" type="Parameter" version="opset1">
<data shape="6,24,12,10" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>6</dim>
<dim>24</dim>
<dim>12</dim>
<dim>10</dim>
</port>
</output>
</layer>
<layer id="1" name="112_input_port_1/value114_const" type="Const" version="opset1">
<data offset="0" size="8" shape="1" element_type="i64"/>
<output>
<port id="1" precision="I64">
<dim>1</dim>
</port>
</output>
</layer>
<layer id="2" name="112" type="NormalizeL2" version="opset1">
<data eps="1e-12" eps_mode="add"/>
<input>
<port id="0">
<dim>6</dim>
<dim>24</dim>
<dim>12</dim>
<dim>10</dim>
</port>
<port id="1">
<dim>1</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>6</dim>
<dim>24</dim>
<dim>12</dim>
<dim>10</dim>
</port>
</output>
</layer>
<layer id="3" name="5354_const" type="Const" version="opset1">
<data offset="8" size="4" shape="1" element_type="f32"/>
<output>
<port id="1" precision="FP32">
<dim>1</dim>
</port>
</output>
</layer>
<layer id="4" name="PartitionedCall/functional_1/lambda/output" type="Multiply" version="opset1">
<input>
<port id="0">
<dim>6</dim>
<dim>24</dim>
<dim>12</dim>
<dim>10</dim>
</port>
<port id="1">
<dim>1</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>6</dim>
<dim>24</dim>
<dim>12</dim>
<dim>10</dim>
</port>
</output>
</layer>
<layer id="5" name="Identity/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>6</dim>
<dim>24</dim>
<dim>12</dim>
<dim>10</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="1" to-layer="2" to-port="1"/>
<edge from-layer="2" from-port="2" to-layer="4" to-port="0"/>
<edge from-layer="3" from-port="1" to-layer="4" to-port="1"/>
<edge from-layer="4" from-port="2" to-layer="5" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="saved_model" version="7">
<layers>
<layer id="0" name="input_a" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>6</dim>
<dim>24</dim>
<dim>12</dim>
<dim>10</dim>
</port>
</output>
</layer>
<layer id="1" name="PartitionedCall/functional_1/lambda/output" type="Normalize">
<data eps="1e-12" across_spatial="0" channel_shared="1"/>
<input>
<port id="0">
<dim>6</dim>
<dim>24</dim>
<dim>12</dim>
<dim>10</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>6</dim>
<dim>24</dim>
<dim>12</dim>
<dim>10</dim>
</port>
</output>
<blobs>
<weights offset="0" size="96" precision="FP32"/>
</blobs>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="1" to-port="0"/>
</edges>
</net>
)V0G0N";
compareIRs(model, modelV7, 100, [](Blob::Ptr& weights) {
auto* buffer = weights->buffer().as<int64_t*>();
buffer[0] = 1;
buffer[1] = 32831;
});
}

View File

@ -0,0 +1,108 @@
// Copyright (C) 2018-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//)
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadNotEqualNetwork) {
std::string model = R"V0G0N(
<net name="saved_model" version="10">
<layers>
<layer id="0" name="input_a" type="Parameter" version="opset1">
<data shape="1,4" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="input_b" type="Parameter" version="opset1">
<data shape="1,4" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="2" name="PartitionedCall/functional_1/tf_op_layer_output/output" type="NotEqual" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>1</dim>
<dim>4</dim>
</port>
</input>
<output>
<port id="2" precision="BOOL">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="3" name="Identity/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>4</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
<edge from-layer="2" from-port="2" to-layer="3" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="saved_model" version="7">
<layers>
<layer id="0" name="input_a" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="input_b" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="2" name="PartitionedCall/functional_1/tf_op_layer_output/output" type="Eltwise" version="opset1">
<data operation="not_equal"/>
<input>
<port id="0">
<dim>1</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>1</dim>
<dim>4</dim>
</port>
</input>
<output>
<port id="2" precision="BOOL">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
</edges>
</net>
)V0G0N";
compareIRs(model, modelV7, 0);
}

View File

@ -0,0 +1,120 @@
// Copyright (C) 2019-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadReduceMinNetwork) {
std::string model = R"V0G0N(
<net name="model" version="10">
<layers>
<layer id="0" name="data" type="Parameter" version="opset1">
<data element_type="f32" shape="3,2,2"/>
<output>
<port id="0" precision="FP32">
<dim>3</dim>
<dim>2</dim>
<dim>2</dim>
</port>
</output>
</layer>
<layer id="1" name="reduced/Cast_175_const" type="Const" version="opset1">
<data element_type="i64" offset="0" shape="3" size="24"/>
<output>
<port id="1" precision="I64">
<dim>3</dim>
</port>
</output>
</layer>
<layer id="2" name="reduced" type="ReduceMin" version="opset1">
<data keep_dims="True"/>
<input>
<port id="0">
<dim>3</dim>
<dim>2</dim>
<dim>2</dim>
</port>
<port id="1">
<dim>3</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>1</dim>
</port>
</output>
</layer>
<layer id="3" name="reduced/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>1</dim>
<dim>1</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="1" to-layer="2" to-port="1"/>
<edge from-layer="2" from-port="2" to-layer="3" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="model" version="7">
<layers>
<layer id="0" name="data" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>3</dim>
<dim>2</dim>
<dim>2</dim>
</port>
</output>
</layer>
<layer id="1" name="reduced/Cast_184_const" type="Const" version="opset1">
<output>
<port id="1" precision="I64">
<dim>3</dim>
</port>
</output>
<blobs>
<custom offset="0" precision="I64" size="12"/>
</blobs>
</layer>
<layer id="2" name="reduced" type="ReduceMin" version="opset1">
<data keep_dims="True"/>
<input>
<port id="0">
<dim>3</dim>
<dim>2</dim>
<dim>2</dim>
</port>
<port id="1">
<dim>3</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>1</dim>
</port>
</output>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="1" to-layer="2" to-port="1"/>
</edges>
</net>
)V0G0N";
compareIRs(model, modelV7, 100, [](Blob::Ptr& weights) {
auto* buffer = weights->buffer().as<int64_t*>();
buffer[0] = 0;
buffer[1] = 1;
buffer[2] = 2;
});
}

View File

@ -0,0 +1,115 @@
// Copyright (C) 2018-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadReduceProdNetwork) {
std::string model = R"V0G0N(
<net name="saved_model" version="10">
<layers>
<layer id="0" name="input_a" type="Parameter" version="opset1">
<data shape="1,1,4" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="PartitionedCall/functional_1/tf_op_layer_output/output/Cast_186_const" type="Const" version="opset1">
<data offset="0" size="8" shape="1" element_type="i64"/>
<output>
<port id="1" precision="I64">
<dim>1</dim>
</port>
</output>
</layer>
<layer id="2" name="PartitionedCall/functional_1/tf_op_layer_output/output" type="ReduceProd" version="opset1">
<data keep_dims="False"/>
<input>
<port id="0">
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>1</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="3" name="Identity/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>4</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="1" to-layer="2" to-port="1"/>
<edge from-layer="2" from-port="2" to-layer="3" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="saved_model" version="7">
<layers>
<layer id="0" name="input_a" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="PartitionedCall/functional_1/tf_op_layer_output/output/Cast_195_const" type="Const" version="opset1">
<output>
<port id="1" precision="I64">
<dim>1</dim>
</port>
</output>
<blobs>
<custom offset="0" size="4" precision="I32"/>
</blobs>
</layer>
<layer id="2" name="PartitionedCall/functional_1/tf_op_layer_output/output" type="ReduceProd" version="opset1">
<data keep_dims="False"/>
<input>
<port id="0">
<dim>1</dim>
<dim>1</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>1</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>4</dim>
</port>
</output>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="1" to-layer="2" to-port="1"/>
</edges>
</net>
)V0G0N";
compareIRs(model, modelV7, 16, [](Blob::Ptr& weights) {
auto *buffer = weights->buffer().as<int64_t *>();
buffer[0] = 1;
});
}

View File

@ -0,0 +1,184 @@
// Copyright (C) 2019-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadSpaceToDepthNetwork) {
std::string model = R"V0G0N(
<net name="saved_model" version="10">
<layers>
<layer id="0" name="input_a" type="Parameter" version="opset1">
<data shape="6,5,4,4" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>6</dim>
<dim>5</dim>
<dim>4</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="PartitionedCall/functional_1/tf_op_layer_output/output" type="SpaceToDepth" version="opset1">
<data mode="blocks_first" block_size="2"/>
<input>
<port id="0">
<dim>6</dim>
<dim>5</dim>
<dim>4</dim>
<dim>4</dim>
</port>
</input>
<output>
<port id="1" precision="FP32">
<dim>6</dim>
<dim>20</dim>
<dim>2</dim>
<dim>2</dim>
</port>
</output>
</layer>
<layer id="2" name="Identity/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>6</dim>
<dim>20</dim>
<dim>2</dim>
<dim>2</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="1" to-port="0"/>
<edge from-layer="1" from-port="1" to-layer="2" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="saved_model" version="7">
<layers>
<layer id="0" name="input_a" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>6</dim>
<dim>5</dim>
<dim>4</dim>
<dim>4</dim>
</port>
</output>
</layer>
<layer id="1" name="PartitionedCall/functional_1/tf_op_layer_output/output/Reshape_to_6D/Cast_1217_const" type="Const" version="opset1">
<output>
<port id="1" precision="I64">
<dim>6</dim>
</port>
</output>
<blobs>
<custom offset="0" size="24" precision="I64"/>
</blobs>
</layer>
<layer id="2" name="PartitionedCall/functional_1/tf_op_layer_output/output/Reshape_to_6D" type="Reshape" version="opset1">
<data special_zero="True"/>
<input>
<port id="0">
<dim>6</dim>
<dim>5</dim>
<dim>4</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>6</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>6</dim>
<dim>5</dim>
<dim>2</dim>
<dim>2</dim>
<dim>2</dim>
<dim>2</dim>
</port>
</output>
</layer>
<layer id="3" name="PartitionedCall/functional_1/tf_op_layer_output/output/Transpose" type="Permute" version="opset1">
<data order="0,3,5,1,2,4"/>
<input>
<port id="0">
<dim>6</dim>
<dim>5</dim>
<dim>2</dim>
<dim>2</dim>
<dim>2</dim>
<dim>2</dim>
</port>
</input>
<output>
<port id="1" precision="FP32">
<dim>6</dim>
<dim>2</dim>
<dim>2</dim>
<dim>5</dim>
<dim>2</dim>
<dim>2</dim>
</port>
</output>
</layer>
<layer id="4" name="PartitionedCall/functional_1/tf_op_layer_output/output/Reshape_to_4D/Cast_1219_const" type="Const" version="opset1">
<output>
<port id="1" precision="I64">
<dim>4</dim>
</port>
</output>
<blobs>
<custom offset="24" size="16" precision="I64"/>
</blobs>
</layer>
<layer id="5" name="PartitionedCall/functional_1/tf_op_layer_output/output" type="Reshape" version="opset1">
<data special_zero="True"/>
<input>
<port id="0">
<dim>6</dim>
<dim>2</dim>
<dim>2</dim>
<dim>5</dim>
<dim>2</dim>
<dim>2</dim>
</port>
<port id="1">
<dim>4</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>6</dim>
<dim>20</dim>
<dim>2</dim>
<dim>2</dim>
</port>
</output>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="1" to-layer="2" to-port="1"/>
<edge from-layer="2" from-port="2" to-layer="3" to-port="0"/>
<edge from-layer="3" from-port="1" to-layer="5" to-port="0"/>
<edge from-layer="4" from-port="1" to-layer="5" to-port="1"/>
</edges>
</net>
)V0G0N";
compareIRs(model, modelV7, 80, [](Blob::Ptr& weights) {
auto* buffer = weights->buffer().as<int64_t*>();
buffer[0] = 6;
buffer[1] = 5;
buffer[2] = 2;
buffer[3] = 2;
buffer[4] = 2;
buffer[5] = 2;
buffer[7] = 6;
buffer[7] = 14;
buffer[8] = 2;
buffer[9] = 2;
});
}

View File

@ -0,0 +1,137 @@
// Copyright (C) 2018-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadSubtractNetwork) {
std::string model = R"V0G0N(
<net name="model" version="10">
<layers>
<layer id="0" name="x" type="Parameter" version="opset1">
<data element_type="f32" shape="3,4,5"/>
<output>
<port id="0" precision="FP32">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
</output>
</layer>
<layer id="1" name="y" type="Parameter" version="opset1">
<data element_type="f32" shape="3,4,5"/>
<output>
<port id="0" precision="FP32">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
</output>
</layer>
<layer id="2" name="z/sub" type="Subtract" version="opset1">
<input>
<port id="0">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
<port id="1">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
</output>
</layer>
<layer id="3" name="z/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="1" from-port="0" to-layer="2" to-port="1"/>
<edge from-layer="2" from-port="2" to-layer="3" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="model" version="7">
<layers>
<layer id="0" name="x" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
</output>
</layer>
<layer id="1" name="y" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
</output>
</layer>
<layer id="2" name="z/neg_" type="Power" version="opset1">
<data power="1" scale="-1.0" shift="0"/>
<input>
<port id="0">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
</input>
<output>
<port id="1" precision="FP32">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
</output>
</layer>
<layer id="3" name="z/sub" type="Eltwise" version="opset1">
<data operation="sum"/>
<input>
<port id="0">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
<port id="1">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>3</dim>
<dim>4</dim>
<dim>5</dim>
</port>
</output>
</layer>
</layers>
<edges>
<edge from-layer="1" from-port="0" to-layer="2" to-port="0"/>
<edge from-layer="0" from-port="0" to-layer="3" to-port="0"/>
<edge from-layer="2" from-port="1" to-layer="3" to-port="1"/>
</edges>
</net>
)V0G0N";
compareIRs(model, modelV7, 0);
}