[LPT] Symmetric quantization support for efficientnet-b0 (#1773)
* [LPT] Symmetric quantization for efficientnet-b0 * [LPT] zero point calculation fix Co-authored-by: Zinoviev, Vladimir <vladimir.zinoviev@intel.com>
This commit is contained in:
@@ -39,7 +39,7 @@ LayerTransformation::LayerTransformation(const Params& params) :
|
||||
precisionsOnWeights(params.precisionsOnWeights),
|
||||
layerTransformationsManager(nullptr),
|
||||
paramsManager(nullptr),
|
||||
quantizationIntervalAsymmetryThreshold(2.e-4),
|
||||
quantizationIntervalAsymmetryThreshold(0.002f),
|
||||
zeroThreshold(1.e-6f),
|
||||
dequantizationShiftToZeroRatioTreshold(4.e-4f),
|
||||
minQuantizationLevels(2ul) {}
|
||||
@@ -352,12 +352,11 @@ LayerTransformation::PrecisionDetails LayerTransformation::getPrecisionDetails(c
|
||||
|
||||
const float expectedRatio = quantizationDetails.levels == 256 ? asymmetricIntervalSideRatio256 : -1.f;
|
||||
const float actualRatio = quantizationDetails.outputLowValues[i] / quantizationDetails.outputHighValues[i];
|
||||
const float actual = std::fabs(
|
||||
(actualRatio - expectedRatio) /
|
||||
std::max(fabs(quantizationDetails.outputLowValues[i]), fabs(quantizationDetails.outputHighValues[i])));
|
||||
const float actual = std::fabs((actualRatio - expectedRatio) / std::min(actualRatio, expectedRatio));
|
||||
if (actual > quantizationIntervalAsymmetryThreshold) {
|
||||
hasZeroPoint = true;
|
||||
}
|
||||
|
||||
#ifdef LPT_PRINT_DEQUANTIZATION_INFO
|
||||
if (hasZeroPoint) {
|
||||
std::cout << " actual: " << actual << ", threshold: " << quantizationIntervalAsymmetryThreshold << std::endl;
|
||||
|
||||
Reference in New Issue
Block a user