MLCE-161: Added support for NormalizationLayer in ArmnnQuantizer.
authorPablo Tello <pablo.tello@arm.com>
Thu, 12 Mar 2020 10:58:39 +0000 (10:58 +0000)
committerPablo Tello <pablo.tello@arm.com>
Mon, 16 Mar 2020 14:22:58 +0000 (14:22 +0000)
* Improved error reporting by using VisitorThrowingPolicy in
   DynamicQuantizationVisitor.

Change-Id: I8a7d0975d448e6c2b6efb5f315ac255eec29f7a2
Signed-off-by: Pablo Tello <pablo.tello@arm.com>
src/armnn/DynamicQuantizationVisitor.cpp
src/armnn/DynamicQuantizationVisitor.hpp

index 862a926..0b03a38 100644 (file)
@@ -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,
index 43768fd..358e471 100644 (file)
@@ -16,14 +16,26 @@ namespace armnn
 {
 
 /// Visitor class to establish min/max ranges based on the type of the layer
-class DynamicQuantizationVisitor : public LayerVisitorBase<VisitorNoThrowPolicy>
+class DynamicQuantizationVisitor : public LayerVisitorBase<VisitorThrowingPolicy>
 {
 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