From 9e0deb76fc25be6a0e898f53a115af3aeed9e5b8 Mon Sep 17 00:00:00 2001 From: FinnWilliamsArm Date: Fri, 6 Sep 2019 10:04:08 +0100 Subject: IVGCVSW-3742 Add Quantizer support for ABS Signed-off-by: FinnWilliamsArm Change-Id: I3f8e716ae432737bb314e26792d18aa518aa1952 --- src/armnn/test/QuantizerTest.cpp | 49 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'src/armnn/test') diff --git a/src/armnn/test/QuantizerTest.cpp b/src/armnn/test/QuantizerTest.cpp index ff1cfc4020..7a5d27bd52 100644 --- a/src/armnn/test/QuantizerTest.cpp +++ b/src/armnn/test/QuantizerTest.cpp @@ -182,6 +182,7 @@ public: } }; + BOOST_AUTO_TEST_CASE(QuantizeAddition) { INetworkPtr network = INetwork::Create(); @@ -1299,6 +1300,54 @@ BOOST_AUTO_TEST_CASE(QuantizeConstant) VisitLayersTopologically(quantizedNetworkQSymm16.get(), validatorQSymm16); } +BOOST_AUTO_TEST_CASE(QuantizeAbs) +{ + class TestAbsQuantization : public TestLeakyReLuActivationQuantization + { + public: + TestAbsQuantization(const TensorShape& inputShape, const TensorShape& outputShape) : + TestLeakyReLuActivationQuantization(inputShape, outputShape) + {} + + TestAbsQuantization(const QuantizerOptions& options, + const TensorShape& inputShape, + const TensorShape& outputShape) : + TestLeakyReLuActivationQuantization(options, inputShape, outputShape) + {} + + void VisitAbsLayer(const IConnectableLayer *layer, + const char *name = nullptr) override + { + TensorInfo outputInfo = layer->GetOutputSlot(0).GetTensorInfo(); + + TestQuantizationParams(outputInfo, + { 30.0f / g_Asymm8QuantizationBase, 128 }, + { 15.0f / g_Symm16QuantizationBase, 0 }); + } + }; + + INetworkPtr network = INetwork::Create(); + + //Add the layer being tested + IConnectableLayer* absLayer = network->AddAbsLayer(); + + const TensorShape shape{1U}; + TensorInfo info(shape, DataType::Float32); + + IConnectableLayer* activation = CreateStartOfLeakyReluNetwork(network.get(), info); + + CompleteLeakyReluNetwork(network.get(), activation, absLayer, info); + + INetworkPtr quantizedNetworkQAsymm8 = INetworkQuantizer::Create(network.get())->ExportNetwork(); + TestAbsQuantization validatorQAsymm8(shape, shape); + VisitLayersTopologically(quantizedNetworkQAsymm8.get(), validatorQAsymm8); + + const QuantizerOptions options(DataType::QuantisedSymm16); + INetworkPtr quantizedNetworkQSymm16 = INetworkQuantizer::Create(network.get(), options)->ExportNetwork(); + TestAbsQuantization validatorQSymm16(options, shape, shape); + VisitLayersTopologically(quantizedNetworkQSymm16.get(), validatorQSymm16); +} + BOOST_AUTO_TEST_CASE(QuantizeConcat) { class TestConcatQuantization : public TestQuantization -- cgit v1.2.1