Add nGraph visitor tests for reduction operations (#5538)
* Add ngraph visitor tests for reduction operations * Add check for number of expected attributes * Add ReduceL1 and ReduceL2 to visitor test typed case of reduce ops * Instantiate reduce operation type in separate file
This commit is contained in:
parent
0b22d6c51c
commit
5a0bcf50c3
@ -237,6 +237,8 @@ set(SRC
|
||||
visitors/op/prior_box.cpp
|
||||
visitors/op/proposal.cpp
|
||||
visitors/op/psroi_pooling.cpp
|
||||
visitors/op/reduce_l1.cpp
|
||||
visitors/op/reduce_l2.cpp
|
||||
visitors/op/reduce_logical_and.cpp
|
||||
visitors/op/reduce_logical_or.cpp
|
||||
visitors/op/reduce_max.cpp
|
||||
|
8
ngraph/test/visitors/op/reduce_l1.cpp
Normal file
8
ngraph/test/visitors/op/reduce_l1.cpp
Normal file
@ -0,0 +1,8 @@
|
||||
// Copyright (C) 2021 Intel Corporation
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include "reduce_ops.hpp"
|
||||
|
||||
using Type = ::testing::Types<ngraph::op::v4::ReduceL1>;
|
||||
INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_l1, ReduceOpsAttrTest, Type);
|
8
ngraph/test/visitors/op/reduce_l2.cpp
Normal file
8
ngraph/test/visitors/op/reduce_l2.cpp
Normal file
@ -0,0 +1,8 @@
|
||||
// Copyright (C) 2021 Intel Corporation
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include "reduce_ops.hpp"
|
||||
|
||||
using Type = ::testing::Types<ngraph::op::v4::ReduceL2>;
|
||||
INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_l2, ReduceOpsAttrTest, Type);
|
@ -2,34 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "reduce_ops.hpp"
|
||||
|
||||
#include "ngraph/ngraph.hpp"
|
||||
#include "ngraph/op/util/attr_types.hpp"
|
||||
#include "ngraph/opsets/opset1.hpp"
|
||||
#include "ngraph/opsets/opset3.hpp"
|
||||
#include "ngraph/opsets/opset4.hpp"
|
||||
#include "ngraph/opsets/opset5.hpp"
|
||||
|
||||
#include "util/visitor.hpp"
|
||||
|
||||
using namespace std;
|
||||
using namespace ngraph;
|
||||
using ngraph::test::NodeBuilder;
|
||||
using ngraph::test::ValueMap;
|
||||
|
||||
TEST(attributes, reduce_logical_and_op)
|
||||
{
|
||||
// ReduceLogicalAnd derives visit_attributes from op::util::LogicalReductionKeepDims
|
||||
NodeBuilder::get_ops().register_factory<opset1::ReduceLogicalAnd>();
|
||||
auto data = make_shared<op::Parameter>(element::f32, Shape{3, 4, 5});
|
||||
auto reduction_axes = make_shared<op::Parameter>(element::i64, Shape{2});
|
||||
|
||||
bool keep_dims = true;
|
||||
|
||||
auto reduce_logical_and = make_shared<opset1::ReduceSum>(data, reduction_axes, keep_dims);
|
||||
NodeBuilder builder(reduce_logical_and);
|
||||
auto g_reduce_logical_and = as_type_ptr<opset1::ReduceSum>(builder.create());
|
||||
|
||||
EXPECT_EQ(g_reduce_logical_and->get_keep_dims(), reduce_logical_and->get_keep_dims());
|
||||
}
|
||||
using Type = ::testing::Types<ngraph::op::v1::ReduceLogicalAnd>;
|
||||
INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_logical_and, ReduceOpsAttrTest, Type);
|
||||
|
@ -2,34 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "reduce_ops.hpp"
|
||||
|
||||
#include "ngraph/ngraph.hpp"
|
||||
#include "ngraph/op/util/attr_types.hpp"
|
||||
#include "ngraph/opsets/opset1.hpp"
|
||||
#include "ngraph/opsets/opset3.hpp"
|
||||
#include "ngraph/opsets/opset4.hpp"
|
||||
#include "ngraph/opsets/opset5.hpp"
|
||||
|
||||
#include "util/visitor.hpp"
|
||||
|
||||
using namespace std;
|
||||
using namespace ngraph;
|
||||
using ngraph::test::NodeBuilder;
|
||||
using ngraph::test::ValueMap;
|
||||
|
||||
TEST(attributes, reduce_logical_or_op)
|
||||
{
|
||||
// ReduceLogicalOr derives visit_attributes from op::util::LogicalReductionKeepDims
|
||||
NodeBuilder::get_ops().register_factory<opset1::ReduceLogicalOr>();
|
||||
auto data = make_shared<op::Parameter>(element::f32, Shape{3, 4, 5});
|
||||
auto reduction_axes = make_shared<op::Parameter>(element::i64, Shape{2});
|
||||
|
||||
bool keep_dims = true;
|
||||
|
||||
auto reduce_logical_or = make_shared<opset1::ReduceLogicalOr>(data, reduction_axes, keep_dims);
|
||||
NodeBuilder builder(reduce_logical_or);
|
||||
auto g_reduce_logical_or = as_type_ptr<opset1::ReduceLogicalOr>(builder.create());
|
||||
|
||||
EXPECT_EQ(g_reduce_logical_or->get_keep_dims(), reduce_logical_or->get_keep_dims());
|
||||
}
|
||||
using Type = ::testing::Types<ngraph::op::v1::ReduceLogicalOr>;
|
||||
INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_logical_or, ReduceOpsAttrTest, Type);
|
||||
|
@ -2,34 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "reduce_ops.hpp"
|
||||
|
||||
#include "ngraph/ngraph.hpp"
|
||||
#include "ngraph/op/util/attr_types.hpp"
|
||||
#include "ngraph/opsets/opset1.hpp"
|
||||
#include "ngraph/opsets/opset3.hpp"
|
||||
#include "ngraph/opsets/opset4.hpp"
|
||||
#include "ngraph/opsets/opset5.hpp"
|
||||
|
||||
#include "util/visitor.hpp"
|
||||
|
||||
using namespace std;
|
||||
using namespace ngraph;
|
||||
using ngraph::test::NodeBuilder;
|
||||
using ngraph::test::ValueMap;
|
||||
|
||||
TEST(attributes, reduce_max_op)
|
||||
{
|
||||
// ReduceMax derives visit_attributes from op::util::ArithmeticReductionKeepDims
|
||||
NodeBuilder::get_ops().register_factory<opset1::ReduceMax>();
|
||||
auto data = make_shared<op::Parameter>(element::f32, Shape{3, 4, 5});
|
||||
auto reduction_axes = make_shared<op::Parameter>(element::i64, Shape{2});
|
||||
|
||||
bool keep_dims = true;
|
||||
|
||||
auto reduce_max = make_shared<opset1::ReduceMax>(data, reduction_axes, keep_dims);
|
||||
NodeBuilder builder(reduce_max);
|
||||
auto g_reduce_max = as_type_ptr<opset1::ReduceMax>(builder.create());
|
||||
|
||||
EXPECT_EQ(g_reduce_max->get_keep_dims(), reduce_max->get_keep_dims());
|
||||
}
|
||||
using Type = ::testing::Types<ngraph::op::v1::ReduceMax>;
|
||||
INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_max, ReduceOpsAttrTest, Type);
|
||||
|
@ -2,34 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "reduce_ops.hpp"
|
||||
|
||||
#include "ngraph/ngraph.hpp"
|
||||
#include "ngraph/op/util/attr_types.hpp"
|
||||
#include "ngraph/opsets/opset1.hpp"
|
||||
#include "ngraph/opsets/opset3.hpp"
|
||||
#include "ngraph/opsets/opset4.hpp"
|
||||
#include "ngraph/opsets/opset5.hpp"
|
||||
|
||||
#include "util/visitor.hpp"
|
||||
|
||||
using namespace std;
|
||||
using namespace ngraph;
|
||||
using ngraph::test::NodeBuilder;
|
||||
using ngraph::test::ValueMap;
|
||||
|
||||
TEST(attributes, reduce_mean_op)
|
||||
{
|
||||
// ReduceMean derives visit_attributes from op::util::ArithmeticReductionKeepDims
|
||||
NodeBuilder::get_ops().register_factory<opset1::ReduceMean>();
|
||||
auto data = make_shared<op::Parameter>(element::f32, Shape{3, 4, 5});
|
||||
auto reduction_axes = make_shared<op::Parameter>(element::i64, Shape{2});
|
||||
|
||||
bool keep_dims = true;
|
||||
|
||||
auto reduce_mean = make_shared<opset1::ReduceMean>(data, reduction_axes, keep_dims);
|
||||
NodeBuilder builder(reduce_mean);
|
||||
auto g_reduce_mean = as_type_ptr<opset1::ReduceMean>(builder.create());
|
||||
|
||||
EXPECT_EQ(g_reduce_mean->get_keep_dims(), reduce_mean->get_keep_dims());
|
||||
}
|
||||
using Type = ::testing::Types<ngraph::op::v1::ReduceMean>;
|
||||
INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_mean, ReduceOpsAttrTest, Type);
|
||||
|
@ -2,34 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "reduce_ops.hpp"
|
||||
|
||||
#include "ngraph/ngraph.hpp"
|
||||
#include "ngraph/op/util/attr_types.hpp"
|
||||
#include "ngraph/opsets/opset1.hpp"
|
||||
#include "ngraph/opsets/opset3.hpp"
|
||||
#include "ngraph/opsets/opset4.hpp"
|
||||
#include "ngraph/opsets/opset5.hpp"
|
||||
|
||||
#include "util/visitor.hpp"
|
||||
|
||||
using namespace std;
|
||||
using namespace ngraph;
|
||||
using ngraph::test::NodeBuilder;
|
||||
using ngraph::test::ValueMap;
|
||||
|
||||
TEST(attributes, reduce_min_op)
|
||||
{
|
||||
// ReduceMin derives visit_attributes from op::util::ArithmeticReductionKeepDims
|
||||
NodeBuilder::get_ops().register_factory<opset1::ReduceMin>();
|
||||
auto data = make_shared<op::Parameter>(element::f32, Shape{3, 4, 5});
|
||||
auto reduction_axes = make_shared<op::Parameter>(element::i64, Shape{2});
|
||||
|
||||
bool keep_dims = true;
|
||||
|
||||
auto reduce_min = make_shared<opset1::ReduceMin>(data, reduction_axes, keep_dims);
|
||||
NodeBuilder builder(reduce_min);
|
||||
auto g_reduce_min = as_type_ptr<opset1::ReduceMin>(builder.create());
|
||||
|
||||
EXPECT_EQ(g_reduce_min->get_keep_dims(), reduce_min->get_keep_dims());
|
||||
}
|
||||
using Type = ::testing::Types<ngraph::op::v1::ReduceMin>;
|
||||
INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_min, ReduceOpsAttrTest, Type);
|
||||
|
48
ngraph/test/visitors/op/reduce_ops.hpp
Normal file
48
ngraph/test/visitors/op/reduce_ops.hpp
Normal file
@ -0,0 +1,48 @@
|
||||
// Copyright (C) 2021 Intel Corporation
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include "ngraph/ngraph.hpp"
|
||||
#include "ngraph/op/util/attr_types.hpp"
|
||||
|
||||
#include "util/visitor.hpp"
|
||||
|
||||
using namespace std;
|
||||
using namespace ngraph;
|
||||
using ngraph::test::NodeBuilder;
|
||||
using ngraph::test::ValueMap;
|
||||
|
||||
template<class T>
|
||||
class ReduceOpsAttrTest : public ::testing::Test
|
||||
{
|
||||
};
|
||||
|
||||
TYPED_TEST_CASE_P(ReduceOpsAttrTest);
|
||||
|
||||
TYPED_TEST_P(ReduceOpsAttrTest, reduce_ops)
|
||||
{
|
||||
Shape in_shape{3, 4, 5};
|
||||
element::Type in_et = element::f32;
|
||||
|
||||
Shape axes_shape{2};
|
||||
element::Type axes_et = element::i64;
|
||||
|
||||
bool keep_dims = true;
|
||||
|
||||
NodeBuilder::get_ops().register_factory<TypeParam>();
|
||||
auto data = make_shared<op::Parameter>(in_et, in_shape);
|
||||
auto reduction_axes = make_shared<op::Parameter>(axes_et, axes_shape);
|
||||
auto reduce_op = make_shared<TypeParam>(data, reduction_axes, keep_dims);
|
||||
|
||||
NodeBuilder builder(reduce_op);
|
||||
const auto expected_attr_count = 1;
|
||||
EXPECT_EQ(builder.get_value_map_size(), expected_attr_count);
|
||||
auto g_reduce_op = as_type_ptr<TypeParam>(builder.create());
|
||||
EXPECT_EQ(g_reduce_op->get_keep_dims(), reduce_op->get_keep_dims());
|
||||
}
|
||||
|
||||
REGISTER_TYPED_TEST_CASE_P(
|
||||
ReduceOpsAttrTest,
|
||||
reduce_ops);
|
@ -2,34 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "reduce_ops.hpp"
|
||||
|
||||
#include "ngraph/ngraph.hpp"
|
||||
#include "ngraph/op/util/attr_types.hpp"
|
||||
#include "ngraph/opsets/opset1.hpp"
|
||||
#include "ngraph/opsets/opset3.hpp"
|
||||
#include "ngraph/opsets/opset4.hpp"
|
||||
#include "ngraph/opsets/opset5.hpp"
|
||||
|
||||
#include "util/visitor.hpp"
|
||||
|
||||
using namespace std;
|
||||
using namespace ngraph;
|
||||
using ngraph::test::NodeBuilder;
|
||||
using ngraph::test::ValueMap;
|
||||
|
||||
TEST(attributes, reduce_prod_op)
|
||||
{
|
||||
// ReduceProd derives visit_attributes from op::util::ArithmeticReductionKeepDims
|
||||
NodeBuilder::get_ops().register_factory<opset1::ReduceProd>();
|
||||
auto data = make_shared<op::Parameter>(element::f32, Shape{3, 4, 5});
|
||||
auto reduction_axes = make_shared<op::Parameter>(element::i64, Shape{2});
|
||||
|
||||
bool keep_dims = true;
|
||||
|
||||
auto reduce_prod = make_shared<opset1::ReduceProd>(data, reduction_axes, keep_dims);
|
||||
NodeBuilder builder(reduce_prod);
|
||||
auto g_reduce_prod = as_type_ptr<opset1::ReduceProd>(builder.create());
|
||||
|
||||
EXPECT_EQ(g_reduce_prod->get_keep_dims(), reduce_prod->get_keep_dims());
|
||||
}
|
||||
using Type = ::testing::Types<ngraph::op::v1::ReduceProd>;
|
||||
INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_prod, ReduceOpsAttrTest, Type);
|
||||
|
@ -2,34 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "reduce_ops.hpp"
|
||||
|
||||
#include "ngraph/ngraph.hpp"
|
||||
#include "ngraph/op/util/attr_types.hpp"
|
||||
#include "ngraph/opsets/opset1.hpp"
|
||||
#include "ngraph/opsets/opset3.hpp"
|
||||
#include "ngraph/opsets/opset4.hpp"
|
||||
#include "ngraph/opsets/opset5.hpp"
|
||||
|
||||
#include "util/visitor.hpp"
|
||||
|
||||
using namespace std;
|
||||
using namespace ngraph;
|
||||
using ngraph::test::NodeBuilder;
|
||||
using ngraph::test::ValueMap;
|
||||
|
||||
TEST(attributes, reduce_sum_op)
|
||||
{
|
||||
// ReduceSum derives visit_attributes from op::util::ArithmeticReductionKeepDims
|
||||
NodeBuilder::get_ops().register_factory<opset1::ReduceSum>();
|
||||
auto data = make_shared<op::Parameter>(element::f32, Shape{3, 4, 5});
|
||||
auto reduction_axes = make_shared<op::Parameter>(element::i64, Shape{2});
|
||||
|
||||
bool keep_dims = true;
|
||||
|
||||
auto reduce_sum = make_shared<opset1::ReduceSum>(data, reduction_axes, keep_dims);
|
||||
NodeBuilder builder(reduce_sum);
|
||||
auto g_reduce_sum = as_type_ptr<opset1::ReduceSum>(builder.create());
|
||||
|
||||
EXPECT_EQ(g_reduce_sum->get_keep_dims(), reduce_sum->get_keep_dims());
|
||||
}
|
||||
using Type = ::testing::Types<ngraph::op::v1::ReduceSum>;
|
||||
INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_sum, ReduceOpsAttrTest, Type);
|
||||
|
Loading…
Reference in New Issue
Block a user