blob: 3e39bef2e762387335fbddb0a86f7ce61a490129 [file] [log] [blame]
//
// Copyright © 2017 Arm Ltd. All rights reserved.
// See LICENSE file in the project root for full license information.
//
#include <boost/test/unit_test.hpp>
#include "armnnTfParser/ITfParser.hpp"
#include "ParserPrototxtFixture.hpp"
BOOST_AUTO_TEST_SUITE(TensorflowParser)
struct ConcatFixture : public armnnUtils::ParserPrototxtFixture<armnnTfParser::ITfParser>
{
explicit ConcatFixture(const armnn::TensorShape& inputShape0, const armnn::TensorShape& inputShape1,
unsigned int concatDim)
{
m_Prototext = R"(
node {
name: "graphInput0"
op: "Placeholder"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
}
}
}
}
node {
name: "graphInput1"
op: "Placeholder"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
}
}
}
}
node {
name: "concat/axis"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: )";
m_Prototext += std::to_string(concatDim);
m_Prototext += R"(
}
}
}
}
node {
name: "concat"
op: "ConcatV2"
input: "graphInput0"
input: "graphInput1"
input: "concat/axis"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_FLOAT
}
}
}
)";
Setup({{"graphInput0", inputShape0 },
{"graphInput1", inputShape1 }}, {"concat"});
}
};
struct ConcatFixtureNCHW : ConcatFixture
{
ConcatFixtureNCHW() : ConcatFixture({ 1, 1, 2, 2 }, { 1, 1, 2, 2 }, 1 ) {}
};
struct ConcatFixtureNHWC : ConcatFixture
{
ConcatFixtureNHWC() : ConcatFixture({ 1, 1, 2, 2 }, { 1, 1, 2, 2 }, 3 ) {}
};
BOOST_FIXTURE_TEST_CASE(ParseConcatNCHW, ConcatFixtureNCHW)
{
RunTest<4>({{"graphInput0", {0.0, 1.0, 2.0, 3.0}},
{"graphInput1", {4.0, 5.0, 6.0, 7.0}}},
{{"concat", { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 }}});
}
BOOST_FIXTURE_TEST_CASE(ParseConcatNHWC, ConcatFixtureNHWC)
{
RunTest<4>({{"graphInput0", {0.0, 1.0, 2.0, 3.0}},
{"graphInput1", {4.0, 5.0, 6.0, 7.0}}},
{{"concat", { 0.0, 1.0, 4.0, 5.0, 2.0, 3.0, 6.0, 7.0 }}});
}
struct ConcatFixtureDim1 : ConcatFixture
{
ConcatFixtureDim1() : ConcatFixture({ 1, 2, 3, 4 }, { 1, 2, 3, 4 }, 1) {}
};
struct ConcatFixtureDim3 : ConcatFixture
{
ConcatFixtureDim3() : ConcatFixture({ 1, 2, 3, 4 }, { 1, 2, 3, 4 }, 3) {}
};
BOOST_FIXTURE_TEST_CASE(ParseConcatDim1, ConcatFixtureDim1)
{
RunTest<4>({ { "graphInput0", { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,
12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0 } },
{ "graphInput1", { 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0,
62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0 } } },
{ { "concat", { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,
12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0,
50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0,
62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0 } } });
}
BOOST_FIXTURE_TEST_CASE(ParseConcatDim3, ConcatFixtureDim3)
{
RunTest<4>({ { "graphInput0", { 0.0, 1.0, 2.0, 3.0,
4.0, 5.0, 6.0, 7.0,
8.0, 9.0, 10.0, 11.0,
12.0, 13.0, 14.0, 15.0,
16.0, 17.0, 18.0, 19.0,
20.0, 21.0, 22.0, 23.0 } },
{ "graphInput1", { 50.0, 51.0, 52.0, 53.0,
54.0, 55.0, 56.0, 57.0,
58.0, 59.0, 60.0, 61.0,
62.0, 63.0, 64.0, 65.0,
66.0, 67.0, 68.0, 69.0,
70.0, 71.0, 72.0, 73.0 } } },
{ { "concat", { 0.0, 1.0, 2.0, 3.0,
50.0, 51.0, 52.0, 53.0,
4.0, 5.0, 6.0, 7.0,
54.0, 55.0, 56.0, 57.0,
8.0, 9.0, 10.0, 11.0,
58.0, 59.0, 60.0, 61.0,
12.0, 13.0, 14.0, 15.0,
62.0, 63.0, 64.0, 65.0,
16.0, 17.0, 18.0, 19.0,
66.0, 67.0, 68.0, 69.0,
20.0, 21.0, 22.0, 23.0,
70.0, 71.0, 72.0, 73.0 } } });
}
BOOST_AUTO_TEST_SUITE_END()