量化模型的 QAT 输出节点具有相同的最小最大范围

QAT output nodes for Quantized Model got the same min max range

最近,我在 tf1.x 上进行了量化感知训练,以将模型推向 Coral Dev Board。但是,当我完成模型训练时,为什么我的 2 个输出伪量化的最小最大值相同?

一个人的最大目标是95和一个是2pi应该不一样吗?

我找到问题了。当模型的那部分不是真正训练有素的 QAT 时,问题就来了。这种情况发生在训练时以某种方式忘记 QAT 的输出节点。 -6 和 6 值来自 tf1.x 量化的默认来源,如前所述 here

为了解决这个问题,我们应该提供一些操作来触发输出节点的 QAT。在我的回归案例中,我在模型中添加了一个虚拟操作:tf.maximum(output,0) 来制作节点 QAT。如果您的输出严格在 0-1 之间,在输出处应用“sigmoid”激活而不是 relu 也可以解决问题。