安装环境:
Ubuntu 16.04
Python 3.5
CUDA 9.0
cuDNN 7
Bazel 0.17.2
TensorFlow 1.11.0
1. 安装 Bazel
-
安装 JDK
sudo apt-get install openjdk-8-jdk
-
添加 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 - -
安装并更新 Bazel
sudo apt-get update && sudo apt-get install bazel
-
-
2. 编译 TensorFlow 库
-
进入源码根目录,运行 ./configure 进行配置。可参考 官网 -> Build from source -> View sample configuration session 设置,主要是 Python 的路径、CUDA 和 CUDNN 的版本和路径以及显卡的计算能力
- 进入 tensorflow 目录进行编译,编译成功后,在 /bazel-bin/tensorflow 目录下会出现 libtensorflow_cc.so 文件
-
C版本: bazel build :libtensorflow.so C++版本: bazel build :libtensorflow_cc.so
-
3. 编译其他依赖
进入 tensorflow/contrib/makefile 目录下,运行./build_all_linux.sh,成功后会出现一个gen文件夹若出现如下错误 /autogen.sh: 4: autoreconf: not found ,安装相应依赖即可 sudo apt-get install autoconf automake libtool
4. 测试
- Cmaklist.txt
-
cmake_minimum_required(VERSION 3.8)
project(Tensorflow_test)set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
include_directories(
/media/lab/data/yongsen/tensorflow-master
/media/lab/data/yongsen/tensorflow-master/tensorflow/bazel-genfiles
/media/lab/data/yongsen/tensorflow-master/tensorflow/contrib/makefile/gen/protobuf/include
/media/lab/data/yongsen/tensorflow-master/tensorflow/contrib/makefile/gen/host_obj
/media/lab/data/yongsen/tensorflow-master/tensorflow/contrib/makefile/gen/proto
/media/lab/data/yongsen/tensorflow-master/tensorflow/contrib/makefile/downloads/nsync/public
/media/lab/data/yongsen/tensorflow-master/tensorflow/contrib/makefile/downloads/eigen
/media/lab/data/yongsen/tensorflow-master/bazel-out/local_linux-py3-opt/genfiles
/media/lab/data/yongsen/tensorflow-master/tensorflow/contrib/makefile/downloads/absl
)add_executable(Tensorflow_test ${SOURCE_FILES})
target_link_libraries(Tensorflow_test
/media/lab/data/yongsen/tensorflow-master/bazel-bin/tensorflow/libtensorflow_cc.so
/media/lab/data/yongsen/tensorflow-master/bazel-bin/tensorflow/libtensorflow_framework.so
) - 创建回话
-
#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";
return 1;
}
cout << "Session successfully created.\n";
return 0;
} - 查看 TensorFlow 版本
-
#include <iostream>
#include <tensorflow/c/c_api.h>int main() {
std:: cout << "Hello from TensorFlow C library version" << TF_Version();
return 0;
}// Hello from TensorFlow C library version1.11.0-rc
- 若提示缺少某些头文件则在 tensorflow 根目录下搜索具体路径,然后添加到 Cmakelist 里面即可。
该内容借鉴:https://blog.csdn.net/seniusen/article/details/82972335