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

问题描述

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

解决方法

对于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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...