| // |
| // Copyright © 2021 Arm Ltd and Contributors. All rights reserved. |
| // SPDX-License-Identifier: MIT |
| // |
| |
| #include "ParserFlatbuffersSerializeFixture.hpp" |
| #include <armnnDeserializer/IDeserializer.hpp> |
| |
| #include <string> |
| |
| TEST_SUITE(Deserializer) |
| { |
| struct ElementwiseUnaryFixture : public ParserFlatbuffersSerializeFixture |
| { |
| explicit ElementwiseUnaryFixture(const std::string& inputShape, |
| const std::string& outputShape, |
| const std::string& dataType, |
| const std::string& unaryOperation = "Abs") |
| { |
| m_JsonString = R"( |
| { |
| inputIds: [0], |
| outputIds: [2], |
| layers: [ |
| { |
| layer_type: "InputLayer", |
| layer: { |
| base: { |
| layerBindingId: 0, |
| base: { |
| index: 0, |
| layerName: "InputLayer", |
| layerType: "Input", |
| inputSlots: [{ |
| index: 0, |
| connection: {sourceLayerIndex:0, outputSlotIndex:0 }, |
| }], |
| outputSlots: [{ |
| index: 0, |
| tensorInfo: { |
| dimensions: )" + inputShape + R"(, |
| dataType: )" + dataType + R"( |
| } |
| }] |
| } |
| } |
| } |
| }, |
| { |
| layer_type: "ElementwiseUnaryLayer", |
| layer: { |
| base: { |
| index: 1, |
| layerName: "ElementwiseUnaryLayer", |
| layerType: "ElementwiseUnary", |
| inputSlots: [{ |
| index: 0, |
| connection: {sourceLayerIndex:0, outputSlotIndex:0 }, |
| }], |
| outputSlots: [{ |
| index: 0, |
| tensorInfo: { |
| dimensions: )" + outputShape + R"(, |
| dataType: )" + dataType + R"( |
| } |
| }] |
| }, |
| descriptor: { |
| activationFunction: )" + unaryOperation + R"( |
| }, |
| } |
| }, |
| { |
| layer_type: "OutputLayer", |
| layer: { |
| base:{ |
| layerBindingId: 2, |
| base: { |
| index: 2, |
| layerName: "OutputLayer", |
| layerType: "Output", |
| inputSlots: [{ |
| index: 0, |
| connection: {sourceLayerIndex:1, outputSlotIndex:0 }, |
| }], |
| outputSlots: [{ |
| index: 0, |
| tensorInfo: { |
| dimensions: )" + outputShape + R"(, |
| dataType: )" + dataType + R"( |
| }, |
| }], |
| } |
| } |
| }, |
| } |
| ] |
| } |
| )"; |
| Setup(); |
| } |
| }; |
| |
| struct SimpleAbsFixture : ElementwiseUnaryFixture |
| { |
| SimpleAbsFixture() : ElementwiseUnaryFixture("[ 1, 2, 2, 2 ]", // inputShape |
| "[ 1, 2, 2, 2 ]", // outputShape |
| "Float32", // dataType |
| "Abs") // unaryOperation |
| {} |
| }; |
| |
| FIXTURE_TEST_CASE(SimpleAbsTest, SimpleAbsFixture) |
| { |
| RunTest<4, armnn::DataType::Float32>( |
| 0, |
| {{"InputLayer", {-100.0f, -50.5f, -25.9999f, -0.5f, 0.0f, 1.5555f, 25.5f, 100.0f}}}, |
| {{"OutputLayer", {100.0f, 50.5f, 25.9999f, 0.5f, 0.0f, 1.5555f, 25.5f, 100.0f}}}); |
| } |
| |
| struct SimpleLogFixture : ElementwiseUnaryFixture |
| { |
| SimpleLogFixture() : ElementwiseUnaryFixture("[ 1, 2, 2, 2 ]", // inputShape |
| "[ 1, 2, 2, 2 ]", // outputShape |
| "Float32", // dataType |
| "Log") // unaryOperation |
| {} |
| }; |
| |
| FIXTURE_TEST_CASE(SimpleLogTest, SimpleLogFixture) |
| { |
| RunTest<4, armnn::DataType::Float32>( |
| 0, |
| {{"InputLayer", {1.0f, 2.1f, 3.2f, 4.3f, 10.f, 100.f, 25.5f, 200.0f}}}, |
| {{"OutputLayer", {0.f, 0.74193734472f, 1.16315080981f, 1.4586150227f, |
| 2.30258509299f, 4.60517018599f, 3.23867845216f, 5.29831736655f}}}); |
| } |
| |
| struct SimpleNegFixture : ElementwiseUnaryFixture |
| { |
| SimpleNegFixture() : ElementwiseUnaryFixture("[ 1, 2, 2, 2 ]", // inputShape |
| "[ 1, 2, 2, 2 ]", // outputShape |
| "Float32", // dataType |
| "Neg") // unaryOperation |
| {} |
| }; |
| |
| FIXTURE_TEST_CASE(SimpleNegTest, SimpleNegFixture) |
| { |
| RunTest<4, armnn::DataType::Float32>( |
| 0, |
| {{"InputLayer", {100.0f, 50.5f, 25.9999f, 0.5f, 0.0f, -1.5555f, -25.5f, -100.0f}}}, |
| {{"OutputLayer", {-100.0f, -50.5f, -25.9999f, -0.5f, 0.0f, 1.5555f, 25.5f, 100.0f}}}); |
| } |
| |
| struct SimpleSinFixture : ElementwiseUnaryFixture |
| { |
| SimpleSinFixture() : ElementwiseUnaryFixture("[ 1, 2, 2, 2 ]", // inputShape |
| "[ 1, 2, 2, 2 ]", // outputShape |
| "Float32", // dataType |
| "Sin") // unaryOperation |
| {} |
| }; |
| |
| FIXTURE_TEST_CASE(SimpleSinTest, SimpleSinFixture) |
| { |
| RunTest<4, armnn::DataType::Float32>( |
| 0, |
| {{"InputLayer", {-100.0f, -50.5f, -25.9999f, -0.5f, 0.0f, 1.5555f, 25.5f, 100.0f}}}, |
| {{"OutputLayer", {0.50636564111f, -0.23237376165f, -0.76249375473f, -0.4794255386f, |
| 0.0f, 0.99988301347f, 0.35905835402f, -0.50636564111f}}}); |
| } |
| } |