Reference:
神经网络量化简介
神经网络加速库QNNPACK
浮点运算不仅耗时, 训练得到的模型消耗的内存也较大. 由于神经网络训练都是在一个dataset上重复epoch, 理论上可以认为模型会被过参数化, 参数具有很多冗余信息, 没必要这么精确. 因此, 将浮点input和参数映射到整数, 能加快运行速度减小内存, 同时不会显著影响模型的性能.
可以把浮点训练的模型, 对权重加入一个quantize以及dequantize的过程, 训练一个量化所需要的浮点值域min/max, 保证模型性能不显著下降.
可以调整 min/max 来选择一个值域,使得值域的值更准确地量化,而范围外的值映射到定点的 min/max)。例如,当从原始值范围 [−1,1] 中选定, [−0.9,0.8] 中的值将更准确地映射到 [0,255] 中,而 [−1,−0.9] 和 [0.8,1] 中的值分别映射为 0 和 255。



