aboutsummaryrefslogtreecommitdiff
path: root/src/armnnQuantizer/QuantizationDataSet.hpp
diff options
context:
space:
mode:
authorNina Drozd <nina.drozd@arm.com>2019-04-25 15:45:20 +0100
committerNina Drozd <nina.drozd@arm.com>2019-05-03 14:43:50 +0100
commit59e15b00ea51fee4baeea750dc11ab1952dfab1d (patch)
tree97e6c9230bf153d404ad3c3e0e285acdb0b6232d /src/armnnQuantizer/QuantizationDataSet.hpp
parent8b194fbe79d44cba566ad8b508d1c8902987ae3c (diff)
downloadarmnn-59e15b00ea51fee4baeea750dc11ab1952dfab1d.tar.gz
IVGCVSW-2834 Add dynamic quantization via datasets
* Add QuantizationDataSet class for quantization data parsed from CSV file * Add QuantizationInput for retrieving quantization data for each layer ID * Add unit tests for command line processor and QuantizationDataSet Change-Id: Iaf0a747b5f25a59a766ac04f7158e8cb7909d179 Signed-off-by: Nina Drozd <nina.drozd@arm.com>
Diffstat (limited to 'src/armnnQuantizer/QuantizationDataSet.hpp')
-rw-r--r--src/armnnQuantizer/QuantizationDataSet.hpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/armnnQuantizer/QuantizationDataSet.hpp b/src/armnnQuantizer/QuantizationDataSet.hpp
new file mode 100644
index 0000000000..3a97630ccf
--- /dev/null
+++ b/src/armnnQuantizer/QuantizationDataSet.hpp
@@ -0,0 +1,55 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <map>
+#include "QuantizationInput.hpp"
+#include "armnn/LayerVisitorBase.hpp"
+#include "armnn/Tensor.hpp"
+
+namespace armnnQuantizer
+{
+
+/// QuantizationDataSet is a structure which is created after parsing a quantization CSV file.
+/// It contains records of filenames which contain refinement data per pass ID for binding ID.
+class QuantizationDataSet
+{
+ using QuantizationInputs = std::vector<armnnQuantizer::QuantizationInput>;
+public:
+
+ using iterator = QuantizationInputs::iterator;
+ using const_iterator = QuantizationInputs::const_iterator;
+
+ QuantizationDataSet();
+ QuantizationDataSet(std::string csvFilePath);
+ ~QuantizationDataSet();
+ bool IsEmpty() const {return m_QuantizationInputs.empty();}
+
+ iterator begin() { return m_QuantizationInputs.begin(); }
+ iterator end() { return m_QuantizationInputs.end(); }
+ const_iterator begin() const { return m_QuantizationInputs.begin(); }
+ const_iterator end() const { return m_QuantizationInputs.end(); }
+ const_iterator cbegin() const { return m_QuantizationInputs.cbegin(); }
+ const_iterator cend() const { return m_QuantizationInputs.cend(); }
+
+private:
+ void ParseCsvFile();
+
+ QuantizationInputs m_QuantizationInputs;
+ std::string m_CsvFilePath;
+};
+
+/// Visitor class implementation to gather the TensorInfo for LayerBindingID for creation of ConstTensor for Refine.
+class InputLayerVisitor : public armnn::LayerVisitorBase<armnn::VisitorNoThrowPolicy>
+{
+public:
+ void VisitInputLayer(const armnn::IConnectableLayer *layer, armnn::LayerBindingId id, const char* name);
+ armnn::TensorInfo GetTensorInfo(armnn::LayerBindingId);
+private:
+ std::map<armnn::LayerBindingId, armnn::TensorInfo> m_TensorInfos;
+};
+
+} // namespace armnnQuantizer \ No newline at end of file