ONE - On-device Neural Engine
Loading...
Searching...
No Matches
onert_micro::core::OMQuantizationData< T > Class Template Reference

#include <OMQuantizationData.h>

Public Types

enum  QuantizationType { CWQ , LWQ }
 

Public Member Functions

 OMQuantizationData (T *data, const circle::Tensor *tensor)
 
const flatbuffers::Vector< float > & Scales () const
 
const flatbuffers::Vector< int64_t > & ZeroPoint () const
 
int64_t ZeroPointAt (size_t idx) const
 
float ScaleAt (size_t idx) const
 
float Dequantize (T qvalue)
 
Quantize (float value)
 
float DataAt (size_t idx)
 
void SetDataAt (size_t idx, float value)
 

Detailed Description

template<typename T>
class onert_micro::core::OMQuantizationData< T >

Definition at line 34 of file OMQuantizationData.h.

Member Enumeration Documentation

◆ QuantizationType

Constructor & Destructor Documentation

◆ OMQuantizationData()

template<typename T >
onert_micro::core::OMQuantizationData< T >::OMQuantizationData ( T *  data,
const circle::Tensor *  tensor 
)
inline

Definition at line 49 of file OMQuantizationData.h.

50 : _data(data)
51 {
52 assert(data != nullptr);
53 assert(tensor != nullptr);
54 assert(tensor->quantization() != nullptr);
55
56 _params = tensor->quantization();
57
58 if (Scales().Length() > 1)
59 {
60 _type = CWQ;
61 }
62 }
const flatbuffers::Vector< float > & Scales() const

References onert_micro::core::OMQuantizationData< T >::CWQ, and onert_micro::core::OMQuantizationData< T >::Scales().

Member Function Documentation

◆ DataAt()

template<typename T >
float onert_micro::core::OMQuantizationData< T >::DataAt ( size_t  idx)
inline

Definition at line 101 of file OMQuantizationData.h.

102 {
103 return Dequantize(_data[idx]);
104 }

References onert_micro::core::OMQuantizationData< T >::Dequantize().

◆ Dequantize()

template<typename T >
float onert_micro::core::OMQuantizationData< T >::Dequantize ( qvalue)
inline

◆ Quantize()

template<typename T >
T onert_micro::core::OMQuantizationData< T >::Quantize ( float  value)
inline

Definition at line 93 of file OMQuantizationData.h.

94 {
95 float fvalue = value / ScaleAt(0) + ZeroPointAt(0);
96 T qvalue = Clamp(std::round(fvalue));
97 return qvalue;
98 }

References onert_micro::core::OMQuantizationData< T >::ScaleAt(), and onert_micro::core::OMQuantizationData< T >::ZeroPointAt().

Referenced by onert_micro::core::OMQuantizationData< T >::SetDataAt().

◆ ScaleAt()

template<typename T >
float onert_micro::core::OMQuantizationData< T >::ScaleAt ( size_t  idx) const
inline

◆ Scales()

template<typename T >
const flatbuffers::Vector< float > & onert_micro::core::OMQuantizationData< T >::Scales ( ) const
inline

Definition at line 65 of file OMQuantizationData.h.

66 {
67 return *(_params->scale());
68 }

Referenced by onert_micro::core::OMQuantizationData< T >::OMQuantizationData(), and onert_micro::core::OMQuantizationData< T >::ScaleAt().

◆ SetDataAt()

template<typename T >
void onert_micro::core::OMQuantizationData< T >::SetDataAt ( size_t  idx,
float  value 
)
inline

Definition at line 106 of file OMQuantizationData.h.

107 {
108 _data[idx] = Quantize(value);
109 }

References onert_micro::core::OMQuantizationData< T >::Quantize().

◆ ZeroPoint()

template<typename T >
const flatbuffers::Vector< int64_t > & onert_micro::core::OMQuantizationData< T >::ZeroPoint ( ) const
inline

Definition at line 70 of file OMQuantizationData.h.

71 {
72 return *(_params->zero_point());
73 }

Referenced by onert_micro::core::OMQuantizationData< T >::ZeroPointAt().

◆ ZeroPointAt()

template<typename T >
int64_t onert_micro::core::OMQuantizationData< T >::ZeroPointAt ( size_t  idx) const
inline

The documentation for this class was generated from the following file: