深度学习

tensorflow: c/c++库,编译和使用

2018-12-24  本文已影响436人  phoenixmy

tensorflow的主要编程语言是python,不过很多场景下会用到c/c++。

首先需要下载tensorflow源码;

其次,编译tensorflow需要用到Bazel,Bazel的安装方法可参考:
https://docs.bazel.build/versions/master/install.html

下图给出了ubuntu系统中的安装方法:


最后,编译源码,生成so库文件:

进入tensorflow_repo_path/tensorflow文件夹,执行:
bazel build :libtensorflow.so
或者
bazel build :libtensorflow_cc.so
第一个是c版本,第二个是c++版本

编出来的库如何使用?

在使用tensorflow c/c++接口时,会有很多头文件依赖、protobuf版本依赖等问题
(1)tensorflow/contrib/makefile目录下,找到build_all_xxx.sh文件并执行,例如准备在linux上使用,就执行build_all_linux.sh文>件,成功后会出现一个gen文件夹
(2)把tensorflow和bazel-genfiles文件夹下的头文件都抽取出来放在一个文件夹下面,或者通过cmake把这两个路径添加进>include_directories中
(3)tensorflow/contrib/makefile/gen/protobuf/include,也就是(1)中生成的文件夹中的头文件,也需要抽取或者在cmake中包>含在include_directories中

接下来就是写代码了,可以参考下面两篇文章:

https://www.cnblogs.com/hrlnw/p/7383951.html
http://www.liuxiao.org/2018/08/ubuntu-tensorflow-c-%E4%BB%8E%E8%AE%AD%E7%BB%83%E5%88%B0%E9%A2%84%E6%B5%8B1%EF%BC%9A%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/

写到最后,忽然想起,如果是NVIDIA的显卡加速,为毛不用tensorrt呢? :(

https://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html#c_topics

上一篇下一篇

猜你喜欢

热点阅读