// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "NetworkQuantizationScheme.hpp" #include #include #include #include #include #include namespace armnn { template void QuantizeConstant(const srcType* src, uint8_t* dst, size_t numElements, float& scale, int& offset) { ARMNN_ASSERT(src); ARMNN_ASSERT(dst); float min = std::numeric_limits::max(); float max = std::numeric_limits::lowest(); for (size_t i = 0; i < numElements; ++i) { min = std::min(min, src[i]); max = std::max(max, src[i]); } QAsymmU8QuantizationScheme quantizationScheme; OffsetScalePair qParams = quantizationScheme.ComputeScheme(min, max); scale = qParams.first; offset = qParams.second; for (size_t i = 0; i < numElements; ++i) { dst[i] = armnn::Quantize(src[i], scale, offset); } } ConstTensor CreateQuantizedConst(const ConstTensor& tensor, std::vector& backing); template void VisitLayers(const LayerContainer& layerContainer, ILayerVisitor& visitor) { visitor.StartVisit(); for (auto layer : layerContainer) { layer->Accept(visitor); } visitor.FinishVisit(); } } // namespace armnn