diff options
author | Nattapat Chaimanowong <nattapat.chaimanowong@arm.com> | 2019-03-20 11:51:14 +0000 |
---|---|---|
committer | nattapat.chaimanowong <nattapat.chaimanowong@arm.com> | 2019-03-20 14:49:03 +0000 |
commit | 7ac07f355f4cb75a54ec423670b7078bd0ecb44d (patch) | |
tree | 5f28c73decbfe0221c2ecedc204f48a7c00884f0 /src/armnn/NetworkQuantizer.cpp | |
parent | 2a434a8a23d75fb62ac0cb3ecb83ba7aab89b8c6 (diff) | |
download | armnn-7ac07f355f4cb75a54ec423670b7078bd0ecb44d.tar.gz |
IVGCVSW-2858 Add support for QSymm16 quantization
Change-Id: Ia7c305c30c39ec0e9db447a461479be17fde250c
Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
Diffstat (limited to 'src/armnn/NetworkQuantizer.cpp')
-rw-r--r-- | src/armnn/NetworkQuantizer.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/armnn/NetworkQuantizer.cpp b/src/armnn/NetworkQuantizer.cpp index bf5c9ef0f2..f577aea00e 100644 --- a/src/armnn/NetworkQuantizer.cpp +++ b/src/armnn/NetworkQuantizer.cpp @@ -24,14 +24,14 @@ namespace armnn { -INetworkQuantizer* INetworkQuantizer::CreateRaw(INetwork* inputNetwork) +INetworkQuantizer* INetworkQuantizer::CreateRaw(INetwork* inputNetwork, const QuantizerOptions& options) { - return new NetworkQuantizer(inputNetwork); + return new NetworkQuantizer(inputNetwork, options); } -INetworkQuantizerPtr INetworkQuantizer::Create(INetwork* inputNetwork) +INetworkQuantizerPtr INetworkQuantizer::Create(INetwork* inputNetwork, const QuantizerOptions& options) { - return INetworkQuantizerPtr(CreateRaw(inputNetwork), &INetworkQuantizer::Destroy); + return INetworkQuantizerPtr(CreateRaw(inputNetwork, options), &INetworkQuantizer::Destroy); } void INetworkQuantizer::Destroy(INetworkQuantizer *quantizer) @@ -58,7 +58,20 @@ INetworkPtr NetworkQuantizer::ExportNetwork() VisitLayers(graph, rangeVisitor); // Step 2) Convert input InputNetwork to Quantized InputNetwork - QuantizerVisitor quantizerVisitor(m_Ranges); + std::unique_ptr<IQuantizationScheme> quantizationScheme; + switch (m_Options.m_ActivationFormat) + { + case DataType::QuantisedAsymm8: + quantizationScheme = std::make_unique<QAsymm8QuantizationScheme>(); + break; + case DataType::QuantisedSymm16: + quantizationScheme = std::make_unique<QSymm16QuantizationScheme>(); + break; + default: + throw InvalidArgumentException("Unsupported quantization target"); + } + + QuantizerVisitor quantizerVisitor(m_Ranges, quantizationScheme.get()); VisitLayers(graph, quantizerVisitor); return quantizerVisitor.RetrieveFinalNetwork(); |