// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include #include "armnnCaffeParser/ICaffeParser.hpp" #include "ParserPrototxtFixture.hpp" BOOST_AUTO_TEST_SUITE(CaffeParser) // The pooling layer should take its input from the relu, not the add directly. struct InPlaceFixture : public armnnUtils::ParserPrototxtFixture { InPlaceFixture() { m_Prototext = R"( name: "InPlace" layer { name: "data" type: "Input" top: "data" input_param { shape: { dim: 1 dim: 1 dim: 1 dim: 1 } } } layer { bottom: "data" bottom: "data" top: "add" name: "add" type: "Eltwise" } layer { name: "relu" type: "ReLU" bottom: "add" top: "relu" phase: TEST } layer { name: "pool" type: "Pooling" bottom: "relu" top: "pool" phase: TEST pooling_param { pool: MAX kernel_size: 1 stride: 1 } } )"; SetupSingleInputSingleOutput("data", "pool"); } }; BOOST_FIXTURE_TEST_CASE(ParseInPlace, InPlaceFixture) { RunTest<1>({ -1.0f }, { 0.0f }); } // 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 armnnUtils::ParserPrototxtFixture { InPlaceOutputFixture() { m_Prototext = R"( name: "InPlace" layer { name: "data" type: "Input" top: "data" input_param { shape: { dim: 1 dim: 1 dim: 1 dim: 1 } } } layer { bottom: "data" bottom: "data" top: "add" name: "add" type: "Eltwise" } layer { name: "relu" type: "ReLU" bottom: "add" top: "add" phase: TEST } )"; SetupSingleInputSingleOutput("data", "add"); } }; BOOST_FIXTURE_TEST_CASE(InPlaceOutput, InPlaceOutputFixture) { RunTest<1>({ -1.0f }, { 0.0f }); } BOOST_AUTO_TEST_SUITE_END()