// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include #include "ParserFlatbuffersSerializeFixture.hpp" #include "../Deserializer.hpp" #include #include BOOST_AUTO_TEST_SUITE(Deserializer) struct NormalizationFixture : public ParserFlatbuffersSerializeFixture { explicit NormalizationFixture(const std::string &inputShape, const std::string & outputShape, const std::string &dataType, const std::string &normAlgorithmChannel, const std::string &normAlgorithmMethod, const std::string &dataLayout) { 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"(, quantizationScale: 0.5, quantizationOffset: 0 }, }] }, } }, }, { layer_type: "NormalizationLayer", layer : { base: { index:1, layerName: "NormalizationLayer", layerType: "Normalization", inputSlots: [{ index: 0, connection: {sourceLayerIndex:0, outputSlotIndex:0 }, }], outputSlots: [{ index: 0, tensorInfo: { dimensions: )" + outputShape + R"(, dataType: )" + dataType + R"( }, }], }, descriptor: { normChannelType: )" + normAlgorithmChannel + R"(, normMethodType: )" + normAlgorithmMethod + R"(, normSize: 3, alpha: 1, beta: 1, k: 1, dataLayout: )" + dataLayout + R"( } }, }, { layer_type: "OutputLayer", layer: { base:{ layerBindingId: 0, 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"( }, }], } }}, }] } )"; SetupSingleInputSingleOutput("InputLayer", "OutputLayer"); } }; struct FloatNhwcLocalBrightnessAcrossNormalizationFixture : NormalizationFixture { FloatNhwcLocalBrightnessAcrossNormalizationFixture() : NormalizationFixture("[ 2, 2, 2, 1 ]", "[ 2, 2, 2, 1 ]", "Float32", "0", "0", "NHWC") {} }; BOOST_FIXTURE_TEST_CASE(Float32NormalizationNhwcDataLayout, FloatNhwcLocalBrightnessAcrossNormalizationFixture) { RunTest<4, armnn::DataType::Float32>(0, { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }, { 0.5f, 0.400000006f, 0.300000012f, 0.235294119f, 0.192307696f, 0.16216217f, 0.140000001f, 0.123076923f }); } struct FloatNchwLocalBrightnessWithinNormalizationFixture : NormalizationFixture { FloatNchwLocalBrightnessWithinNormalizationFixture() : NormalizationFixture("[ 2, 1, 2, 2 ]", "[ 2, 1, 2, 2 ]", "Float32", "1", "0", "NCHW") {} }; BOOST_FIXTURE_TEST_CASE(Float32NormalizationNchwDataLayout, FloatNchwLocalBrightnessWithinNormalizationFixture) { RunTest<4, armnn::DataType::Float32>(0, { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }, { 0.0322581f, 0.0645161f, 0.0967742f, 0.1290323f, 0.0285714f, 0.0342857f, 0.04f, 0.0457143f }); } BOOST_AUTO_TEST_SUITE_END()