安装具有量化支持的 Tensorflow
Install Tensorflow with Quantization Support
这是我另一个问题的后续:
基本上,我想安装支持 8 位量化的 Tensorflow。目前,我在CentOS 7机器(不支持GPU)上用pip安装方式安装了Tensorflow 0.9。
我可以编译 运行 Pete Warden 博客 post 中给出的代码。但是,我无法导入 Pete Warden 回复中给出的功能。我想添加量化支持。我也无法在 Tensorflow 文档中找到有关量化部分的任何详细信息。
任何人都可以分享有关如何操作的详细信息吗?
暂时,我想出了一个方法来做到这一点。但仍在等待任何 TensorFlow 开发人员的官方方法。
- 首先安装tensorflow(源码安装和pip安装我都试过了,都可以)
- 从 Github 存储库获取 tensorflow 源并转到 tensorflow 根目录(我将其命名为
tensorflow_root
.
- 现在编译Pete Warden's blog
中给出的量化脚本
bazel build tensorflow/contrib/quantization/tools:quantize_graph
这将为量化版本创建操作库。转到 tensorflow_root/bazel-bin/tensorflow/contrib/quantization,您应该会看到两个库文件:_quantized_ops.so
和 kernels/_quantized_kernels.so
- 现在,在您的脚本中,连同 tensorflow,您还应该使用专用的 tensorflow 函数导入这两个库文件
您可以使用 tf.load_op_library() 函数
import tensorflow as tf
qops = tf.load_op_library('[tensorflow_root]/bazel-bin/tensorflow/contrib/quantization/_quantized_ops.so')
qkernelops = tf.load_op_library('[tensorflow_root]/bazel-bin/tensorflow/contrib/quantization/kernels/_quantized_kernels.so')
您使用的是 GPU 还是 CPU 版本的 tensorflow。
例如,它不适用于 CPU,尽管 Abid 已经提到从本地工作目录加载 ops 库。
但是当最新版本集成了这些操作并且导入时没有错误时,使用 bazel build 有什么意义呢?
$ khemant@saturn:~/DeepLearning/TF$ python -c "import tensorflow as tf; print(tf.__version__)"
0.12.0-rc0
$ khemant@saturn:~/DeepLearning/TF$ python
Python 2.7.6(默认值,2016 年 10 月 26 日,20:30:19)
Linux2 上的 [GCC 4.8.4]
键入 "help"、"copyright"、"credits" 或 "license" 以获取更多信息。
>>> from tensorflow.contrib.quantization import load_quantized_ops_so
回溯(最近调用最后):
文件“”,第 1 行,位于
导入错误:无法导入名称 load_quantized_ops_so
>>> import tensorflow as tf
>>> from tensorflow.contrib.quantization import load_quantized_ops_so
回溯(最近调用最后):
文件“”,第 1 行,位于
导入错误:无法导入名称 load_quantized_ops_so
`
这是我另一个问题的后续:
基本上,我想安装支持 8 位量化的 Tensorflow。目前,我在CentOS 7机器(不支持GPU)上用pip安装方式安装了Tensorflow 0.9。
我可以编译 运行 Pete Warden 博客 post 中给出的代码。但是,我无法导入 Pete Warden 回复中给出的功能。我想添加量化支持。我也无法在 Tensorflow 文档中找到有关量化部分的任何详细信息。
任何人都可以分享有关如何操作的详细信息吗?
暂时,我想出了一个方法来做到这一点。但仍在等待任何 TensorFlow 开发人员的官方方法。
- 首先安装tensorflow(源码安装和pip安装我都试过了,都可以)
- 从 Github 存储库获取 tensorflow 源并转到 tensorflow 根目录(我将其命名为
tensorflow_root
. - 现在编译Pete Warden's blog 中给出的量化脚本
bazel build tensorflow/contrib/quantization/tools:quantize_graph
这将为量化版本创建操作库。转到 tensorflow_root/bazel-bin/tensorflow/contrib/quantization,您应该会看到两个库文件:_quantized_ops.so
和 kernels/_quantized_kernels.so
- 现在,在您的脚本中,连同 tensorflow,您还应该使用专用的 tensorflow 函数导入这两个库文件
您可以使用 tf.load_op_library() 函数
import tensorflow as tf
qops = tf.load_op_library('[tensorflow_root]/bazel-bin/tensorflow/contrib/quantization/_quantized_ops.so')
qkernelops = tf.load_op_library('[tensorflow_root]/bazel-bin/tensorflow/contrib/quantization/kernels/_quantized_kernels.so')
您使用的是 GPU 还是 CPU 版本的 tensorflow。
例如,它不适用于 CPU,尽管 Abid 已经提到从本地工作目录加载 ops 库。
但是当最新版本集成了这些操作并且导入时没有错误时,使用 bazel build 有什么意义呢?
$ khemant@saturn:~/DeepLearning/TF$ python -c "import tensorflow as tf; print(tf.__version__)"
0.12.0-rc0
$ khemant@saturn:~/DeepLearning/TF$ python
Python 2.7.6(默认值,2016 年 10 月 26 日,20:30:19) Linux2 上的 [GCC 4.8.4] 键入 "help"、"copyright"、"credits" 或 "license" 以获取更多信息。
>>> from tensorflow.contrib.quantization import load_quantized_ops_so
回溯(最近调用最后): 文件“”,第 1 行,位于 导入错误:无法导入名称 load_quantized_ops_so
>>> import tensorflow as tf
>>> from tensorflow.contrib.quantization import load_quantized_ops_so
回溯(最近调用最后): 文件“”,第 1 行,位于 导入错误:无法导入名称 load_quantized_ops_so `