FunctionalOpTests (#3294)

* add 4 tests for operators based on model zoo

* fix wrong names of the models

* add functional tests for equal, lstm_cell and psroi_pooling operators
This commit is contained in:
Bartek Szmelczynski 2020-11-24 04:23:14 +01:00 committed by GitHub
parent a6d6203f79
commit 2c13e084ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 559 additions and 0 deletions

View File

@ -0,0 +1,235 @@
// Copyright (C) 2018-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadEqualNetwork) {
std::string model = R"V0G0N(
<net name="Equal" version="10">
<layers>
<layer id="0" name="in1" type="Parameter" version="opset1">
<data shape="256,56" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>256</dim>
<dim>56</dim>
</port>
</output>
</layer>
<layer id="1" name="in2" type="Parameter" version="opset1">
<data shape="256,56" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>256</dim>
<dim>56</dim>
</port>
</output>
</layer>
<layer id="2" name="PartitionedCall/functional_1/tf_op_layer_Equal/Equal" type="Equal" version="opset1"> <input>
<port id="0">
<dim>256</dim>
<dim>56</dim>
</port>
<port id="1">
<dim>256</dim>
<dim>56</dim>
</port>
</input>
<output>
<port id="2" precision="BOOL">
<dim>256</dim>
<dim>56</dim>
</port>
</output>
</layer>
<layer id="3" name="Identity/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>256</dim>
<dim>56</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="Equal" version="7">
<layers>
<layer id="0" name="in1" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>256</dim>
<dim>56</dim>
</port>
</output>
</layer>
<layer id="1" name="in2" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>256</dim>
<dim>56</dim>
</port>
</output>
</layer>
<layer id="2" name="PartitionedCall/functional_1/tf_op_layer_Equal/Equal" type="Eltwise" version="opset1">
<data operation="equal"/>
<input>
<port id="0">
<dim>256</dim>
<dim>56</dim>
</port>
<port id="1">
<dim>256</dim>
<dim>56</dim>
</port>
</input>
<output>
<port id="2" precision="BOOL">
<dim>256</dim>
<dim>56</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);
}
TEST_F(NGraphReaderTests, ReadEqualBroadcastNetwork) {
std::string model = R"V0G0N(
<net name="Equal" version="10">
<layers>
<layer id="0" name="in1" type="Parameter" version="opset1">
<data shape="8,1,1,6" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>8</dim>
<dim>1</dim>
<dim>1</dim>
<dim>6</dim>
</port>
</output>
</layer>
<layer id="1" name="in2" type="Parameter" version="opset1">
<data shape="1,5,7,1" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>5</dim>
<dim>7</dim>
<dim>1</dim>
</port>
</output>
</layer>
<layer id="2" name="PartitionedCall/functional_1/tf_op_layer_Equal/Equal" type="Equal" version="opset1">
<input>
<port id="0">
<dim>8</dim>
<dim>1</dim>
<dim>1</dim>
<dim>6</dim>
</port>
<port id="1">
<dim>1</dim>
<dim>5</dim>
<dim>7</dim>
<dim>1</dim>
</port>
</input>
<output>
<port id="2" precision="BOOL">
<dim>8</dim>
<dim>5</dim>
<dim>7</dim>
<dim>6</dim>
</port>
</output>
</layer>
<layer id="3" name="Identity/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>8</dim>
<dim>5</dim>
<dim>7</dim>
<dim>6</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="Equal" version="7">
<layers>
<layer id="0" name="in1" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>8</dim>
<dim>1</dim>
<dim>1</dim>
<dim>6</dim>
</port>
</output>
</layer>
<layer id="1" name="in2" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>5</dim>
<dim>7</dim>
<dim>1</dim>
</port>
</output>
</layer>
<layer id="2" name="PartitionedCall/functional_1/tf_op_layer_Equal/Equal" type="Eltwise" version="opset1">
<data operation="equal"/>
<input>
<port id="0">
<dim>8</dim>
<dim>1</dim>
<dim>1</dim>
<dim>6</dim>
</port>
<port id="1">
<dim>1</dim>
<dim>5</dim>
<dim>7</dim>
<dim>1</dim>
</port>
</input>
<output>
<port id="2" precision="BOOL">
<dim>8</dim>
<dim>5</dim>
<dim>7</dim>
<dim>6</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);
}

View File

@ -0,0 +1,199 @@
// Copyright (C) 2018-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadLSTMCellNetwork) {
std::string model = R"V0G0N(
<net name="LSTMCell" version="10">
<layers>
<layer id="0" name="in0" type="Parameter" version="opset1">
<data shape="1,512" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>512</dim>
</port>
</output>
</layer>
<layer id="1" name="in1" type="Parameter" version="opset1">
<data shape="1,256" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>256</dim>
</port>
</output>
</layer>
<layer id="2" name="in2" type="Parameter" version="opset1">
<data shape="1,256" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>256</dim>
</port>
</output>
</layer>
<layer id="3" name="in3" type="Const" version="opset1">
<data offset="22223012" size="2097152" shape="1024,512" element_type="f32"/>
<output>
<port id="1" precision="FP32">
<dim>1024</dim>
<dim>512</dim>
</port>
</output>
</layer>
<layer id="4" name="in4" type="Const" version="opset1">
<data offset="24320164" size="1048576" shape="1024,256" element_type="f32"/>
<output>
<port id="1" precision="FP32">
<dim>1024</dim>
<dim>256</dim>
</port>
</output>
</layer>
<layer id="5" name="in5" type="Const" version="opset1">
<data offset="25368740" size="4096" shape="1024" element_type="f32"/>
<output>
<port id="1" precision="FP32">
<dim>1024</dim>
</port>
</output>
</layer>
<layer id="6" name="LSTMCell" type="LSTMCell" version="opset1" precision="FP32">
<data hidden_size="256" element_type="f32"/>
<input>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>512</dim>
</port>
<port id="1" precision="FP32">
<dim>1</dim>
<dim>256</dim>
</port>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>256</dim>
</port>
<port id="3" precision="FP32">
<dim>1024</dim>
<dim>512</dim>
</port>
<port id="4" precision="FP32">
<dim>1024</dim>
<dim>256</dim>
</port>
<port id="5" precision="FP32">
<dim>1024</dim>
</port>
</input>
<output>
<port id="6" precision="FP32">
<dim>1</dim>
<dim>256</dim>
</port>
<port id="7" precision="FP32">
<dim>1</dim>
<dim>256</dim>
</port>
</output>
</layer>
<layer id="7" name="485/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>256</dim>
</port>
</input>
</layer>
<layer id="8" name="485/sink_port_1" type="Result" version="opset1">
<input>
<port id="0">
<dim>1</dim>
<dim>256</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="6" to-port="0"/>
<edge from-layer="1" from-port="0" to-layer="6" to-port="1"/>
<edge from-layer="2" from-port="0" to-layer="6" to-port="2"/>
<edge from-layer="3" from-port="1" to-layer="6" to-port="3"/>
<edge from-layer="4" from-port="1" to-layer="6" to-port="4"/>
<edge from-layer="5" from-port="1" to-layer="6" to-port="5"/>
<edge from-layer="6" from-port="6" to-layer="7" to-port="0"/>
<edge from-layer="6" from-port="7" to-layer="8" to-port="0"/>
</edges>
</net>
)V0G0N";
std::string modelV7 = R"V0G0N(
<net name="LSTMCell" version="7">
<layers>
<layer id="0" name="in0" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>512</dim>
</port>
</output>
</layer>
<layer id="1" name="in1" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>256</dim>
</port>
</output>
</layer>
<layer id="2" name="in2" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>256</dim>
</port>
</output>
</layer>
<layer id="3" name="LSTMCell" type="LSTMCell" version="opset1" precision="FP32">
<data hidden_size="256" element_type="f32" activations="sigmoid,tanh,tanh" activations_alpha="" activations_beta="" clip="0.00000"/>
<input>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>512</dim>
</port>
<port id="1" precision="FP32">
<dim>1</dim>
<dim>256</dim>
</port>
<port id="2" precision="FP32">
<dim>1</dim>
<dim>256</dim>
</port>
</input>
<output>
<port id="3">
<dim>1</dim>
<dim>256</dim>
</port>
<port id="4">
<dim>1</dim>
<dim>256</dim>
</port>
</output>
<blobs>
<weights offset="22222928" size="3145728" precision="FP32"/>
<biases offset="25368656" size="4096" precision="FP32"/>
</blobs>
</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="0" to-layer="3" to-port="2"/>
</edges>
</net>
)V0G0N";
compareIRs(model, modelV7, 26000000);
}

View File

@ -0,0 +1,125 @@
// Copyright (C) 2018-2020 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <string>
#include "ngraph_reader_tests.hpp"
TEST_F(NGraphReaderTests, ReadPSROIPoolingNetwork) {
std::string model = R"V0G0N(
<net name="PSROIPooling" version="10">
<layers>
<layer id="0" name="detector/bbox/ps_roi_pooling/placeholder_port_0" type="Parameter" version="opset1">
<data shape="1,392,34,62" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>392</dim>
<dim>34</dim>
<dim>62</dim>
</port>
</output>
</layer>
<layer id="1" name="detector/bbox/ps_roi_pooling/placeholder_port_1" type="Parameter" version="opset1">
<data shape="200,5" element_type="f32"/>
<output>
<port id="0" precision="FP32">
<dim>200</dim>
<dim>5</dim>
</port>
</output>
</layer>
<layer id="2" name="detector/bbox/ps_roi_pooling" type="PSROIPooling" version="opset2">
<data spatial_scale="0.0625" spatial_bins_x="3" spatial_bins_y="3" output_dim="8" group_size="7" mode="average"/>
<input>
<port id="0">
<dim>1</dim>
<dim>392</dim>
<dim>34</dim>
<dim>62</dim>
</port>
<port id="1">
<dim>200</dim>
<dim>5</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>200</dim>
<dim>8</dim>
<dim>7</dim>
<dim>7</dim>
</port>
</output>
</layer>
<layer id="3" name="detector/bbox/ps_roi_pooling/sink_port_0" type="Result" version="opset1">
<input>
<port id="0">
<dim>200</dim>
<dim>8</dim>
<dim>7</dim>
<dim>7</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="PSROIPooling" version="7">
<layers>
<layer id="0" name="detector/bbox/ps_roi_pooling/placeholder_port_0" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>392</dim>
<dim>34</dim>
<dim>62</dim>
</port>
</output>
</layer>
<layer id="1" name="detector/bbox/ps_roi_pooling/placeholder_port_1" type="Input" version="opset1">
<output>
<port id="0" precision="FP32">
<dim>200</dim>
<dim>5</dim>
</port>
</output>
</layer>
<layer id="2" name="detector/bbox/ps_roi_pooling" type="PSROIPooling" version="opset2">
<data spatial_scale="0.0625" output_dim="8" spatial_bins_x="3" spatial_bins_y="3" group_size="7" mode="average" no_trans="True" trans_std="0"/>
<input>
<port id="0">
<dim>1</dim>
<dim>392</dim>
<dim>34</dim>
<dim>62</dim>
</port>
<port id="1">
<dim>200</dim>
<dim>5</dim>
</port>
</input>
<output>
<port id="2" precision="FP32">
<dim>200</dim>
<dim>8</dim>
<dim>7</dim>
<dim>7</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);
}