【发布时间】:2020-10-14 01:26:52
【问题描述】:
最近,我在 tf1.x 上进行了量化意识培训,以将模型推送到 Coral Dev Board。但是,当我完成模型训练后,为什么我的 2 个输出假量化的 min max 是一样的?
一个人的最大目标是95,一个是2pi,应该不一样吗?
【问题讨论】:
标签: deep-learning tensorflow-lite quantization google-coral quantization-aware-training
最近,我在 tf1.x 上进行了量化意识培训,以将模型推送到 Coral Dev Board。但是,当我完成模型训练后,为什么我的 2 个输出假量化的 min max 是一样的?
一个人的最大目标是95,一个是2pi,应该不一样吗?
【问题讨论】:
标签: deep-learning tensorflow-lite quantization google-coral quantization-aware-training
我已经找到了问题所在。当模型的那部分没有真正训练过 QAT 时,就会出现问题。这发生在训练时以某种方式忘记 QAT 的输出节点。 -6 和 6 值来自 tf1.x 量化的默认来源,如提及 here
为了克服这个问题,我们应该提供一些操作来触发输出节点的 QAT。在我的回归案例中,我在模型中添加了一个虚拟操作:tf.maximum(output,0) 来制作节点 QAT。如果您的输出严格在 0-1 之间,则在输出处应用“sigmoid”激活而不是 relu 也可以解决问题。
【讨论】: