摘要: 最近在研究如何使用tensorflow c++ API调用tensorflow python环境下训练得到的网络模型文件。参考了很多博客,文档,一路上踩了很多坑,现将自己的方法步骤记录下来,希望能够帮到有需要的人!(本文默认读者对python环境下tensorflow的使用已经比较熟悉了)
方法简要梳理如下:
- 安装bazel,然后使用bazel编译tensorflow源码,产生我们需要的库文件。
- 在python环境下,使用tensorflow训练一个深度神经网络,本文以mnist为例。将训练好的模型和参数冻结在一个pb文件中。
- 在C++环境下,调用pb文件,对图片进行预测。最终结果如下图所示,程序成功识别到图片中的数字为1,且概率为0.95。
具体程序参考项目:
https://github.com/zhangcliff/tensorflow-c-mnist.git
1.安装bazel
echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install bazel
2.tensorflow的下载。
本博文使用的tensorflow版本为1.4,其他版本的c++编译可能会有一些不一样。
git clone https://github.com/tensorflow/tensorflow.git
3.tensorflow的c++编译。
3.1 进入tensorflow文件夹中,首先进行项目配置。
./configure
下面我贴出在我的机器上各选项的选择:值得注意的是,如果我们要使用cuda和cudnn的话,一定要搞清楚自己机器上使用的cuda和cudnn的版本(尤其是cudnn),例如我使用的是cuda8.0和cudnn6.0.21。