0

我正在尝试根据建议量化MobileFacenet来自 sirius-ai 的代码) ,我认为我遇到了与这个 相同的问题

当我添加tf.contrib.quantize.create_training_graph()到训练图中
(train_nets.py ln.187:在梯度之前train_op = train(...)或在train()utils/common.py ln.38 之前)

它没有在图中添加量化感知操作来收集动态范围 max\min。

我假设我应该在 tensorboard 中看到一些额外的节点,但我没有,因此我认为我没有成功地在训练图中添加量化感知操作。我尝试追踪 tensorflow,发现我对 _FindLayersToQuantize() 一无所获。

但是,当我添加tf.contrib.quantize.create_eval_graph()以优化训练图时。我可以看到一些量化感知操作作为act_quant ...由于我没有成功在训练图中添加操作,因此我没有权重可以加载到评估图中。因此我收到了一些错误消息

Key MobileFaceNet/Logits/LinearConv1x1/act_quant/max not found in checkpoint

或者

tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value MobileFaceNet/Logits/LinearConv1x1/act_quant/max

有谁知道如何解决这个错误?或者如何以高精度获得量化的 MobileFacenet?

谢谢!

4

1 回答 1

1

H,

不幸的是,contrib/quantize 工具现在已被弃用。它将无法支持较新的模型,我们不再致力于它。

如果您对 QAT 感兴趣,我建议您尝试新的TF/Keras QAT API。我们正在积极开发它并为其提供支持。

于 2020-08-10T19:10:32.847 回答