美文网首页
tensorflow c++ api 预测python训练好的模

tensorflow c++ api 预测python训练好的模

作者: 小小兰哈哈 | 来源:发表于2020-05-17 18:36 被阅读0次

    一.安装说明:

    1.安装bazel, Eigen

    1)安装bazel

    本人采用的源码安装方式,在https://github.com/bazelbuild/bazel/releases上下载

    与硬件配置相关的安装源码。如在linux的64位系统下,可以下载bazel-0.19.2 installer linux-x86_64.sh(注意,tensorflow 的编译对于bazel 对应版本有要求,1.13对应的是bazel-0.19.2,如果版本有误,会编译不通过),并执行shell文件安装。具体版本需求请参照

    https://www.tensorflow.org/install/source

    2)安装Eigen

    说明: Eigen 是一个高层次的C++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。Eigen是一个开源库,从3.1.1版本开始遵从MPL2许可,如果在tensorflow的build前没有安装eigen,在bazel的build过程中会报如下错误:

    /tensorflow/core/framework/tensor. types h:19:10:fatal

    error: /third_ party/eigen3/unsupported/Eigen/CXX1/Tensor. No such file or directory

    include "third party/eigen3/unsupported/Eigen/CXX11/Tensor"

    compilation terminated.

    Target //tensorflow/core::tensorfiow failed to build

    安装说明:

    1. apt-get方式(假设默认安装到usr/local/include里(可在终端中输入locate eigen3查看  位置),若实际中默认安装到/usrs/include的话,可以对应替换下面命令的相应部分)

    运行命令:

    sudo apt-get install libeigen3-dev

    运行命令: (参考第二种方法的最下面的说明)

    sudo cp -r /usr/local/include/eigen3/Eigein /usr/local/include执行复制命令,将Eigen文件夹及其内容放在/usr/include

    2.下载源码包和安装protocbuf

    git clone -recursive https://github.com/tensorflow/tensorflow

    cd tensorflow/contrib/makefile

    ./build_all_linux.sh

    ./configure

    至此,tensorflow 配置完毕.

     说明:安装protobuf  

    Protocol Buffers  (简称Protobuf) 是Google开源的一款跨语言,跨平台,拓展性好的  序列化工具,网上有许多安装  protoc的教程,但是我推荐最好使用tesorflow源码包里面的build_ alllinux.sh进行protobuf的自动安装,这样,protoc 的版本和tensorflow的版本是对应的(import)

    cd tensoflow/tensorflow/contrib/makefile && /build alllindex.sh

    查看版本以验证安装: protoc --version


    二.编译过程

    编译过程有两种方式,种是使用 bazel build的方式,直接在源码的workspace里面去编译:另一种, 是使用先编译动态链接库。再使用编译好的so文件,实现具体的compilation任务。

    1)

    bazel build -C opt <target>

    其中copt的含义为--compilation_ mode=opt, 也可以用以下形式表现:

    config. setting(

    name=" simple',

    values = {"compilation. mode":"opt"})

    若需要在GPU上执行,则添加一个config选项

    bazel build C opt -copt=mavx -config=cuda <target>

    举例说明:

    编写示例程序demo.cc

    #include <iostream>

    #include "tensorflow/cc/client/client_session.h"

    #include tensorflow/cc/ops/standard_ops.h"

    int main(){

    using namespace tensorflow;

    using namespace tensorflow ops;

    Scope root = Scope NewRootScope():

    //MatrixA=[3:2:-10]

    auto A= Const(root, {3.f,2.f},{-1f,0.f)\});

    //Vector b=[3 5]

    auto b= Const(root, {3.f,5.f });

    auto v=MatMul(root WithOpName("v", A, b, MatMul:TransposeB(true));

    std:vector<Tensor> outputs;

    ClientSession session(root);

    mkdir tensorflow/demo

    demo.cc放到tensorflow/demo 文件夹

    BUILD文件写为

    cc_binary(

        name="demo", srcs=["demo.cc"],

        deps=["//tensorflow/cc:cc_ops",

                    "//tensorflow/cc:client_session",

                    "//tensorflow/core:tensorflow"]])

    运行 bazel build- opt demo  生成demo可执行文件,生成可执行文件的位置在 bazel-bin/tensorflow/demo/demo

    运行示例:

     bazel-bin/tensorflow/demo/demo

    2019-09-0615:10:59.905602: tensorflow/demo/democc:219

    2)方法二:先编译动态链接库

     bazel build//tensorflow:libtensorflow_cc.so

    建立 TensorFlow库文件夹: sudo mkdir/usrr/local/tensorflow

    复制 include文件:

     mkdir /usr/local/tensorflow/include

     cp -r bazel-genfiles/ /usr/local/tensorflow/include/tf  cp-r tensorflow/*/usr/local/tensorflow/include/tf/tensorflow

     cp -r third_party /usr/local/tensorflow/include/tf

    复制lib文件:

     sudo mkdir /usr/local/tensorflow/lib  

     sudo cp-r bazel-bin/tensorflow/libtensorflow_cc.so/usr/local/tensorflow/lib/

    相关文章

      网友评论

          本文标题:tensorflow c++ api 预测python训练好的模

          本文链接:https://www.haomeiwen.com/subject/vumeuctx.html