我一直在尝试新的8位量化功能在 TensorFlow 中可用。我可以毫无问题地运行博客文章中给出的示例(googlenet 的量化),并且它对我来说效果很好!
现在,我想将同样的方法应用于更简单的网络。因此,我使用了 CIFAR-10 的预训练网络(在 Caffe 上训练),提取其参数,在张量流中创建相应的图,使用此预训练的权重初始化权重,最后将其保存为 GraphDef 对象。看到这个IPython笔记本完整的程序。
现在,我使用张量流脚本应用了 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
到张量流会话并传递图像(与我将其传递到原始版本的方式相同)。完整代码可以在这里找到IPython 笔记本。
但正如你在最后看到的,我收到以下错误:
NotFoundError: Op type not registered 'QuantizeV2'
有人能建议我在这里缺少什么吗?
由于量化操作和内核位于 contrib 中,因此您需要在 Python 脚本中显式加载它们。有一个例子quantize_graph.py 脚本本身:
from tensorflow.contrib.quantization import load_quantized_ops_so
from tensorflow.contrib.quantization.kernels import load_quantized_kernels_so
这是我们应该更新文档来提及的事情!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)