tensorflowcc++库使⽤⽅法
tensorflow⽬前⽀持最好的语⾔还是python,但⼤部分服务都⽤C++ or Java开发,⼀般采⽤动态链接库(.so)⽅式调⽤算法,因此tensorflow的c/c++ API还是有必要熟悉下,⽽且经过本⼈测试,相同算法,c接⼝相⽐python速度更快。
下⾯讲解如何让程序调⽤tensorflow c/c++库
1.编译库
先在github上下载tensorflow源码,执⾏./configure先配置项⽬,然后按照博客⾥写的利⽤bazel编译动态链接库,编译命令如下
C版本:
bazel build :libtensorflow.so
C++版本:
bazel build :libtensorflow_cc.so
编译成功后,在bazel-bin/tensorflow/⽬录下会出现libtensorflow.so/libtensorflow_cc.so⽂件
2.其他依赖
在使⽤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中
3.编写代码
随便编写⼀段使⽤tf的代码,例如下⾯:
#include <tensorflow/core/platform/env.h>
#include <tensorflow/core/public/session.h>
#include <iostream>
using namespace std;
using namespace tensorflow;
int main()
{
Session* session;
Status status = NewSession(SessionOptions(), &session);
if (!status.ok()) {
cout << status.ToString() << "\n";
return1;
cmake如何使用}
cout << "Session successfully created.\n";
}
4.⽣成可执⾏⽂件
把libtensorflow_cc.so⽂件放在lib⽂件夹下,代码放在src⽂件夹下,编写,具体⽂件结构如下:
/src
/lib
/include
/build
下⾯是⼀个例⼦:
cmake_minimum_required (VERSION 2.8.8)
project (tf_example)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -W")
aux_source_directory(./src DIR_SRCS)
link_directories(./lib)
include_directories(
path_to_tensorflow/tensorflow
path_to_tensorflow/tensorflow/bazel-genfiles
path_to_tensorflow/tensorflow/contrib/makefile/gen/protobuf/include
) add_executable(tf_test ${DIR_SRCS}) target_link_libraries(tf_example tensorflow_cc)
接下来执⾏命令:
cd build
cmake ..
make
会⽣成⼀个tf_test可执⾏⽂件,执⾏⽆误即⼤功告成
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论