Tensorflow 中的 8 位量化错误

Error with 8-bit Quantization in Tensorflow

我一直在试验 TensorFlow 中可用的新 8-bit quantization feature。我可以 运行 博客 post 中给出的示例(googlenet 的量化)没有任何问题,它对我来说工作正常!!!

现在,我想将其应用于更简单的网络。所以我为 CIFAR-10 使用了一个预训练网络(在 Caffe 上训练),提取它的参数,在 tensorflow 中创建相应的图,用这个预训练的权重初始化权重,最后将它保存为一个 GraphDef 对象。请参阅此 IPython Notebook 了解完整程序。

现在我使用 tensorflow 脚本应用了 8 位量化,如 Pete Warden 的博客中所述:

bazel-bin/tensorflow/contrib/quantization/tools/quantize_graph --input=cifar.pb  --output=qcifar.pb --mode=eightbit --bitdepth=8 --output_node_names="ArgMax"

现在我想 运行 在这个量化网络上进行分类。所以我将新的 qcifar.pb 加载到一个 tensorflow 会话并传递图像(与我将它传递给原始版本的方式相同)。完整代码可以在 IPython Notebook.

中找到

但是正如您最后看到的,我收到以下错误:

NotFoundError: Op type not registered 'QuantizeV2'

谁能告诉我我在这里遗漏了什么?

因为量化的操作和内核在 contrib 中,您需要在 python 脚本中显式加载它们。在 the quantize_graph.py script itself:

中有一个例子

from tensorflow.contrib.quantization import load_quantized_ops_so from tensorflow.contrib.quantization.kernels import load_quantized_kernels_so

这是我们应该更新文档以提及的内容!