blob: de681676120bcfc4a9eae64865b800c119c8ef7a [file] [log] [blame]
//
// Copyright © 2017 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include <boost/test/unit_test.hpp>
#include "ParserFlatbuffersSerializeFixture.hpp"
#include <armnnDeserializer/IDeserializer.hpp>
#include <string>
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()