From 5c391dcdc3dd2c4e0f246be3eeb7a089d3c9323d Mon Sep 17 00:00:00 2001 From: Pablo Tello Date: Thu, 12 Mar 2020 10:58:39 +0000 Subject: MLCE-161: Added support for NormalizationLayer in ArmnnQuantizer. * Improved error reporting by using VisitorThrowingPolicy in DynamicQuantizationVisitor. Change-Id: I8a7d0975d448e6c2b6efb5f315ac255eec29f7a2 Signed-off-by: Pablo Tello --- src/armnn/DynamicQuantizationVisitor.cpp | 31 ++++++++++++++++++++++++++++++- src/armnn/DynamicQuantizationVisitor.hpp | 18 +++++++++++++++--- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/src/armnn/DynamicQuantizationVisitor.cpp b/src/armnn/DynamicQuantizationVisitor.cpp index 862a926abc..0b03a3861d 100644 --- a/src/armnn/DynamicQuantizationVisitor.cpp +++ b/src/armnn/DynamicQuantizationVisitor.cpp @@ -83,9 +83,28 @@ void DynamicQuantizationVisitor::VisitNonCalibratedLayers() { } } -void DynamicQuantizationVisitor::VisitAdditionLayer(const IConnectableLayer* layer, const char* name) +void DynamicQuantizationVisitor::VisitAdditionLayer(const IConnectableLayer* layer, + const char* name) +{ + IgnoreUnused(name); + SetRange(layer, 0, -20.f, 20.f); + AddToCalibratedLayers(layer); +} + +void DynamicQuantizationVisitor::VisitAbsLayer(const IConnectableLayer* layer, + const char* name) +{ + IgnoreUnused(name); + SetRange(layer, 0, -20.f, 20.f); + AddToCalibratedLayers(layer); +} + +void DynamicQuantizationVisitor::VisitArgMinMaxLayer(const IConnectableLayer* layer, + const ArgMinMaxDescriptor& desc, + const char* name) { IgnoreUnused(name); + IgnoreUnused(desc); SetRange(layer, 0, -20.f, 20.f); AddToCalibratedLayers(layer); } @@ -108,6 +127,16 @@ void DynamicQuantizationVisitor::VisitBatchNormalizationLayer(const IConnectable AddToCalibratedLayers(layer); } +void DynamicQuantizationVisitor::VisitNormalizationLayer(const IConnectableLayer* layer, + const NormalizationDescriptor& desc, + const char* name) +{ + IgnoreUnused(desc); + IgnoreUnused(name); + SetRange(layer, 0, -15.0f, 15.0f); + AddToCalibratedLayers(layer); +} + void DynamicQuantizationVisitor::VisitConvolution2dLayer(const IConnectableLayer* layer, const Convolution2dDescriptor& convolution2dDescriptor, const ConstTensor& weights, diff --git a/src/armnn/DynamicQuantizationVisitor.hpp b/src/armnn/DynamicQuantizationVisitor.hpp index 43768fd077..358e47187e 100644 --- a/src/armnn/DynamicQuantizationVisitor.hpp +++ b/src/armnn/DynamicQuantizationVisitor.hpp @@ -16,14 +16,26 @@ namespace armnn { /// Visitor class to establish min/max ranges based on the type of the layer -class DynamicQuantizationVisitor : public LayerVisitorBase +class DynamicQuantizationVisitor : public LayerVisitorBase { public: DynamicQuantizationVisitor(RangeTracker& rangeTracker, Graph& graph); ~DynamicQuantizationVisitor() = default; /// Functions to set the Range on a per-layer-type basis - void VisitAdditionLayer(const IConnectableLayer* layer, const char* name = nullptr) override; + void VisitAbsLayer(const IConnectableLayer* layer, + const char* name = nullptr) override; + + void VisitAdditionLayer(const IConnectableLayer* layer, + const char* name = nullptr) override; + + void VisitArgMinMaxLayer(const IConnectableLayer* layer, + const ArgMinMaxDescriptor& desc, + const char* name = nullptr) override; + + void VisitNormalizationLayer(const IConnectableLayer* layer, + const NormalizationDescriptor& desc, + const char* name = nullptr) override ; void VisitBatchNormalizationLayer(const IConnectableLayer* layer, const BatchNormalizationDescriptor& desc, @@ -134,4 +146,4 @@ private: void RemoveDebugLayers(); }; -} //namespace armnn \ No newline at end of file +} //namespace armnn -- cgit v1.2.1