linux平台下编译 TensorFlow 的 C/C++ 接口

安装环境:
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 库

  • TensorFlow 源码:https://github.com/tensorflow/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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值