diff options
author | telsoa01 <telmo.soares@arm.com> | 2018-08-31 09:22:23 +0100 |
---|---|---|
committer | telsoa01 <telmo.soares@arm.com> | 2018-08-31 09:22:23 +0100 |
commit | c577f2c6a3b4ddb6ba87a882723c53a248afbeba (patch) | |
tree | bd7d4c148df27f8be6649d313efb24f536b7cf34 /src/armnnCaffeParser/test | |
parent | 4c7098bfeab1ffe1cdc77f6c15548d3e73274746 (diff) | |
download | armnn-c577f2c6a3b4ddb6ba87a882723c53a248afbeba.tar.gz |
Release 18.08
Diffstat (limited to 'src/armnnCaffeParser/test')
-rw-r--r-- | src/armnnCaffeParser/test/TestAdd.cpp | 2 | ||||
-rw-r--r-- | src/armnnCaffeParser/test/TestConcat.cpp | 2 | ||||
-rw-r--r-- | src/armnnCaffeParser/test/TestConvolution.cpp | 133 | ||||
-rw-r--r-- | src/armnnCaffeParser/test/TestDropout.cpp | 2 | ||||
-rw-r--r-- | src/armnnCaffeParser/test/TestInPlace.cpp | 4 | ||||
-rw-r--r-- | src/armnnCaffeParser/test/TestInputs.cpp | 22 | ||||
-rw-r--r-- | src/armnnCaffeParser/test/TestMul.cpp | 2 | ||||
-rw-r--r-- | src/armnnCaffeParser/test/TestMultiInputsOutputs.cpp | 2 | ||||
-rw-r--r-- | src/armnnCaffeParser/test/TestPooling2d.cpp | 2 | ||||
-rw-r--r-- | src/armnnCaffeParser/test/TestSplit.cpp | 2 |
10 files changed, 154 insertions, 19 deletions
diff --git a/src/armnnCaffeParser/test/TestAdd.cpp b/src/armnnCaffeParser/test/TestAdd.cpp index 7d91924638..1ee593739e 100644 --- a/src/armnnCaffeParser/test/TestAdd.cpp +++ b/src/armnnCaffeParser/test/TestAdd.cpp @@ -8,7 +8,7 @@ BOOST_AUTO_TEST_SUITE(CaffeParser) -struct AddFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> +struct AddFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> { AddFixture() { diff --git a/src/armnnCaffeParser/test/TestConcat.cpp b/src/armnnCaffeParser/test/TestConcat.cpp index 441c28c837..52ef4aff4b 100644 --- a/src/armnnCaffeParser/test/TestConcat.cpp +++ b/src/armnnCaffeParser/test/TestConcat.cpp @@ -8,7 +8,7 @@ BOOST_AUTO_TEST_SUITE(CaffeParser) -struct ConcatFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> +struct ConcatFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> { ConcatFixture() { diff --git a/src/armnnCaffeParser/test/TestConvolution.cpp b/src/armnnCaffeParser/test/TestConvolution.cpp new file mode 100644 index 0000000000..4e3af3ca85 --- /dev/null +++ b/src/armnnCaffeParser/test/TestConvolution.cpp @@ -0,0 +1,133 @@ +// +// 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 "armnnCaffeParser/ICaffeParser.hpp" +#include "ParserPrototxtFixture.hpp" +#include <sstream> +#include <initializer_list> + +namespace +{ + +template <typename T> +std::string TaggedSequence(const std::string & tag, const std::initializer_list<T> & data) +{ + bool first = true; + std::stringstream ss; + for (auto && d : data) + { + if (!first) + { + ss << " , "; + } + else + { + first = false; + } + ss << " " << tag << " : " << d << " "; + } + return ss.str(); +} + +template <typename T> +std::string TaggedSequence(const std::string & tag, T data, unsigned int n) +{ + std::stringstream ss; + for (unsigned int i=0; i<n; ++i) + { + if (i>0) + { + ss << " , "; + } + ss << " " << tag << " : " << data << " "; + } + return ss.str(); +} + +} // namespace <anonymous> + +BOOST_AUTO_TEST_SUITE(CaffeParser) + +struct ConvolutionFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> +{ + ConvolutionFixture(const std::initializer_list<unsigned int> & inputDims, + const std::initializer_list<float> & filterData, + unsigned int kernelSize, + unsigned int numOutput=1, + unsigned int group=1) + { + m_Prototext = R"( + name: "ConvolutionTest" + layer { + name: "input1" + type: "Input" + top: "input1" + input_param { shape: { )" + TaggedSequence("dim", inputDims) + R"( } } + } + layer { + name: "conv1" + type: "Convolution" + bottom: "input1" + top: "conv1" + blobs: { )" + TaggedSequence("data", filterData) + R"( } + blobs: { )" + TaggedSequence("data", 0, numOutput) + R"( } + convolution_param { + num_output: )" + std::to_string(numOutput) + R"( + pad: 0 + kernel_size: )" + std::to_string(kernelSize) + R"( + stride: 1 + group: )" + std::to_string(group) + R"( + } + } + )"; + SetupSingleInputSingleOutput("input1", "conv1"); + } +}; + +struct SimpleConvolutionFixture : public ConvolutionFixture +{ + SimpleConvolutionFixture() + : ConvolutionFixture( {1, 1, 2, 2}, {1.0f, 1.0f, 1.0f, 1.0f}, 2) + { + } +}; + +BOOST_FIXTURE_TEST_CASE(SimpleConvolution, SimpleConvolutionFixture) +{ + RunTest<4>({ 1, 3, 5, 7 }, { 16 }); +} + +struct GroupConvolutionFixture : public ConvolutionFixture +{ + GroupConvolutionFixture() + : ConvolutionFixture( + {1, 2, 2, 2}, + { + 1.0f, 1.0f, 1.0f, 1.0f, // filter for channel #0 + 2.0f, 2.0f, 2.0f, 2.0f // filter for channel #1 + }, + 2, // kernel size is 2x2 + 2, // number of output channels is 2 + 2) // number of groups (separate filters) + { + } +}; + +BOOST_FIXTURE_TEST_CASE(GroupConvolution, GroupConvolutionFixture) +{ + RunTest<4>( + { + 1, 2, 3, 4, // input channel #0 + 5, 6, 7, 8, // input channel #1 + }, + { + 10, // convolution result for channel #0 applying filter #0 + 52 // same for channel #1 and filter #1 + } + ); +} + + +BOOST_AUTO_TEST_SUITE_END()
\ No newline at end of file diff --git a/src/armnnCaffeParser/test/TestDropout.cpp b/src/armnnCaffeParser/test/TestDropout.cpp index 16f2c2728c..66135251e0 100644 --- a/src/armnnCaffeParser/test/TestDropout.cpp +++ b/src/armnnCaffeParser/test/TestDropout.cpp @@ -9,7 +9,7 @@ BOOST_AUTO_TEST_SUITE(CaffeParser) -struct DropoutFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> +struct DropoutFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> { DropoutFixture() { diff --git a/src/armnnCaffeParser/test/TestInPlace.cpp b/src/armnnCaffeParser/test/TestInPlace.cpp index 3954baa75b..623f01c8f1 100644 --- a/src/armnnCaffeParser/test/TestInPlace.cpp +++ b/src/armnnCaffeParser/test/TestInPlace.cpp @@ -9,7 +9,7 @@ BOOST_AUTO_TEST_SUITE(CaffeParser) // The pooling layer should take its input from the relu, not the add directly. -struct InPlaceFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> +struct InPlaceFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> { InPlaceFixture() { @@ -59,7 +59,7 @@ BOOST_FIXTURE_TEST_CASE(ParseInPlace, InPlaceFixture) // The requested output of the network is a layer which has an activation attached. // The output of the network should therefore actually be the activation layer. -struct InPlaceOutputFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> +struct InPlaceOutputFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> { InPlaceOutputFixture() { diff --git a/src/armnnCaffeParser/test/TestInputs.cpp b/src/armnnCaffeParser/test/TestInputs.cpp index f0e2343a33..b8458de5a7 100644 --- a/src/armnnCaffeParser/test/TestInputs.cpp +++ b/src/armnnCaffeParser/test/TestInputs.cpp @@ -35,16 +35,18 @@ BOOST_AUTO_TEST_CASE(InputShapes) std::string implicitInputNoShape = "name: \"Minimal\"\n" "input: \"data\" \n"; - armnn::IRuntimePtr runtime(armnn::IRuntime::Create(armnn::Compute::CpuRef)); + armnn::IRuntime::CreationOptions options; + armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options)); armnnCaffeParser::ICaffeParserPtr parser(armnnCaffeParser::ICaffeParser::Create()); armnn::INetworkPtr network(nullptr, nullptr); armnn::NetworkId netId; // Check everything works normally + std::vector<armnn::Compute> backends = {armnn::Compute::CpuRef}; { network = parser->CreateNetworkFromString(explicitInput.c_str(), {}, { "data" }); BOOST_TEST(network.get()); - runtime->LoadNetwork(netId, Optimize(*network, runtime->GetDeviceSpec())); + runtime->LoadNetwork(netId, Optimize(*network, backends, runtime->GetDeviceSpec())); armnnCaffeParser::BindingPointInfo inputBindingInfo = parser->GetNetworkInputBindingInfo("data"); armnn::TensorInfo inputTensorInfo = inputBindingInfo.second; @@ -56,11 +58,11 @@ BOOST_AUTO_TEST_CASE(InputShapes) BOOST_TEST(inputTensorInfo.GetShape()[3] == 4); } - // Check everything works with implicit input + // Checks everything works with implicit input. { network = parser->CreateNetworkFromString(implicitInput.c_str(), {}, { "data" }); BOOST_TEST(network.get()); - runtime->LoadNetwork(netId, Optimize(*network, runtime->GetDeviceSpec())); + runtime->LoadNetwork(netId, Optimize(*network, backends, runtime->GetDeviceSpec())); armnnCaffeParser::BindingPointInfo inputBindingInfo = parser->GetNetworkInputBindingInfo("data"); armnn::TensorInfo inputTensorInfo = inputBindingInfo.second; @@ -72,11 +74,11 @@ BOOST_AUTO_TEST_CASE(InputShapes) BOOST_TEST(inputTensorInfo.GetShape()[3] == 4); } - // Check everything works with implicit and passing shape + // Checks everything works with implicit and passing shape. { network = parser->CreateNetworkFromString(implicitInput.c_str(), { {"data", { 2, 2, 3, 4 } } }, { "data" }); BOOST_TEST(network.get()); - runtime->LoadNetwork(netId, Optimize(*network, runtime->GetDeviceSpec())); + runtime->LoadNetwork(netId, Optimize(*network, backends, runtime->GetDeviceSpec())); armnnCaffeParser::BindingPointInfo inputBindingInfo = parser->GetNetworkInputBindingInfo("data"); armnn::TensorInfo inputTensorInfo = inputBindingInfo.second; @@ -88,11 +90,11 @@ BOOST_AUTO_TEST_CASE(InputShapes) BOOST_TEST(inputTensorInfo.GetShape()[3] == 4); } - // Check everything works with implicit (no shape) and passing shape + // Checks everything works with implicit (no shape) and passing shape. { network = parser->CreateNetworkFromString(implicitInputNoShape.c_str(), {{"data", {2, 2, 3, 4} }}, { "data" }); BOOST_TEST(network.get()); - runtime->LoadNetwork(netId, Optimize(*network, runtime->GetDeviceSpec())); + runtime->LoadNetwork(netId, Optimize(*network, backends, runtime->GetDeviceSpec())); armnnCaffeParser::BindingPointInfo inputBindingInfo = parser->GetNetworkInputBindingInfo("data"); armnn::TensorInfo inputTensorInfo = inputBindingInfo.second; @@ -104,13 +106,13 @@ BOOST_AUTO_TEST_CASE(InputShapes) BOOST_TEST(inputTensorInfo.GetShape()[3] == 4); } - // Check exception on incompatible shapes + // Checks exception on incompatible shapes. { BOOST_CHECK_THROW(parser->CreateNetworkFromString(implicitInput.c_str(), {{"data",{ 2, 2, 3, 2 }}}, {"data"}), armnn::ParseException); } - // Check exception when no shape available + // Checks exception when no shape available. { BOOST_CHECK_THROW(parser->CreateNetworkFromString(implicitInputNoShape.c_str(), {}, { "data" }), armnn::ParseException); diff --git a/src/armnnCaffeParser/test/TestMul.cpp b/src/armnnCaffeParser/test/TestMul.cpp index b53318e81e..dc72780a47 100644 --- a/src/armnnCaffeParser/test/TestMul.cpp +++ b/src/armnnCaffeParser/test/TestMul.cpp @@ -8,7 +8,7 @@ BOOST_AUTO_TEST_SUITE(CaffeParser) -struct MulFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> +struct MulFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> { MulFixture() { diff --git a/src/armnnCaffeParser/test/TestMultiInputsOutputs.cpp b/src/armnnCaffeParser/test/TestMultiInputsOutputs.cpp index cd87246bee..ebda3ce1b8 100644 --- a/src/armnnCaffeParser/test/TestMultiInputsOutputs.cpp +++ b/src/armnnCaffeParser/test/TestMultiInputsOutputs.cpp @@ -8,7 +8,7 @@ BOOST_AUTO_TEST_SUITE(CaffeParser) -struct MultiInputsOutputsFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> +struct MultiInputsOutputsFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> { MultiInputsOutputsFixture() { diff --git a/src/armnnCaffeParser/test/TestPooling2d.cpp b/src/armnnCaffeParser/test/TestPooling2d.cpp index 25cd124648..b48693129c 100644 --- a/src/armnnCaffeParser/test/TestPooling2d.cpp +++ b/src/armnnCaffeParser/test/TestPooling2d.cpp @@ -8,7 +8,7 @@ BOOST_AUTO_TEST_SUITE(CaffeParser) -struct GlobalPoolingFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> +struct GlobalPoolingFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> { GlobalPoolingFixture() { diff --git a/src/armnnCaffeParser/test/TestSplit.cpp b/src/armnnCaffeParser/test/TestSplit.cpp index c2f29fb4f3..a84d7ec70a 100644 --- a/src/armnnCaffeParser/test/TestSplit.cpp +++ b/src/armnnCaffeParser/test/TestSplit.cpp @@ -8,7 +8,7 @@ BOOST_AUTO_TEST_SUITE(CaffeParser) -struct SplitFixture : public ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> +struct SplitFixture : public armnnUtils::ParserPrototxtFixture<armnnCaffeParser::ICaffeParser> { SplitFixture() { |