21 template<
typename srcType>
22 void QuantizeConstant(
const srcType* src, uint8_t* dst,
size_t numElements,
float& scale,
int& offset)
27 float min = std::numeric_limits<srcType>::max();
28 float max = std::numeric_limits<srcType>::lowest();
29 for (
size_t i = 0; i < numElements; ++i)
31 min = std::min(min, src[i]);
32 max = std::max(max, src[i]);
37 scale = qParams.first;
38 offset = qParams.second;
40 for (
size_t i = 0; i < numElements; ++i)
42 dst[i] = armnn::Quantize<uint8_t>(src[i], scale, offset);
48 template <
typename LayerContainer>
52 for (
auto layer : layerContainer)
54 layer->Accept(visitor);
std::pair< float, int > OffsetScalePair
Copyright (c) 2020 ARM Limited.
void VisitLayers(const LayerContainer &layerContainer, ILayerVisitor &visitor)
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
#define ARMNN_ASSERT(COND)
void QuantizeConstant(const srcType *src, uint8_t *dst, size_t numElements, float &scale, int &offset)
virtual void StartVisit()
OffsetScalePair ComputeScheme(double min, double max) const override
ConstTensor CreateQuantizedConst(const ConstTensor &tensor, std::vector< uint8_t > &backing)
virtual void FinishVisit()