批量标准化量化Tensorflow 1.x没有MinMax信息

时间:2020-09-01 03:58:51

标签: tensorflow tensorflow-lite batch-normalization quantization quantization-aware-training

用作生成输出数组模型/ re_lu_1 / Relu的Conv运算符的输入的图层(....)缺少最小/最大数据,这是量化所必需的。如果精度很重要,则可以针对非量化的输出格式,也可以从浮点检查点对模型进行量化训练,以更改输入图以包含最小/最大信息。如果您不关心准确性,可以通过--default_ranges_min =和--default_ranges_max =进行简单的实验。

1 个答案:

答案 0 :(得分:0)

对于tensorflow 1.x,如果要量化,则必须将其放置在伪造的量化节点上以激活模型的量化。 量化分为三个阶段:

  1. 训练部分:将模型加载到图形=>通过contrib创建训练图形=>训练并存储权重ckpt
  2. 评估部分:不带权重将模型加载到图形=>创建评估图=>恢复图形=>导出到冻结模型
  3. Toco / tflite将冻结模型转换为量化模型

但是,最重要的因素是模型中batch_normalization的配置。尝试了多种配置后,最好的方法是使用tensorflow.keras.layers中的不带融合选项的batch_normalization。该层应仅在具有已解析的激活参数的tensorflow.keras.layers.Conv2D下附加。

如果执行上述过程,则该图层不会产生错误does not have MinMax information

以下是不正确的,在RELU中缺少虚假量化

enter image description here

正确的一个

an