tensorflow C++ 环境搭建及调用tensorflow python环境下训练得到的网络模型文件

主要参考:【1】https://blog.csdn.net/gubenpeiyuan/article/details/80855644

                  【2】https://www.tensorflow.org/install/source?h=zn-ch#configure_the_installation

                  【3】https://www.cnblogs.com/yangwithtao/p/9091142.html

                  【4】https://blog.csdn.net/qq_16775293/article/details/81119375

                  【5】https://blog.csdn.net/rockingdingo/article/details/75452711

                  【6】https://zhuanlan.zhihu.com/p/46566618

                  【7】https://www.jianshu.com/p/d92913173d5b

 

1. 基础环境安装(bazel,gcc,protocbuf,eigen3)

        我的机器是ubuntu 16.4 64位的,bazel的安装要和使用的tensorflow版本对应,官方安装教程里给出了对应的版本关系,可是经测试没有参考价值,会提示出错。比如我使用的是tensorflow-1.8.0,官方给出的gcc版本是4.8,Bazel版本是0.10.0,可是编译的时候会失败,提示升级到Bazel 0.26.1以上,gcc会提示不支持C++14,升级到gcc 5才编译成功。

  • Bazel安装使用参考【7】,使用二进制安装。
  • gcc的安装使用参考【3】,包括gcc版本切换方式。
  • eigen3安装最新版就可以
  • protocbuf的版本很重要,需要在tensorflow的源文件tensorflow/worksapce.bzl里找到下载链接。

2. 下载tensorflow源码,编译c++ api

     tensorflow源文件下载地址https://github.com/tensorflow/tensorflow/releases,我用的tensorflow 1.8.0。

     第一步进入tensorflow文件夹中,首先进行项目配置

./configure

配置过程中处了填写路径,所有的选项都选择了N。

配置成功后,利用bazel编译

bazel build --config=opt //tensorflow:libtensorflow_cc.so

编译完成后,在bazel-bin/tensorflow中会生成两个我们需要的库文件:libtensorflow_cc.so 和 libtensorflow_framework.so。

在后面我们用C++调用tensorflow时需要链接这两个库文件。

3. 使用tensorflow C++ api调用图模型(.pb文件)

这里主要参考【1】的方法。

 

cmake_minimum_required (VERSION 2.8.8)
project (tf_example)
 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -W")

link_directories(./lib)

include_directories(
   /home/jwh/Documents/Tesla/tensorflow-1.8.0
   /home/jwh/Documents/Tesla/tensorflow-1.8.0/bazel-genfiles
   /home/jwh/Documents/Tesla/tensorflow-1.8.0/bazel-bin/tensorflow
   /home/jwh/Documents/Tesla/tensorflow-1.8.0/tensorflow/contrib/makefile/downloads/nsync/public
   /home/jwh/Documents/Tesla/tensorflow-1.8.0/tensorflow/contrib/makefile/downloads/protobuf/include
   /home/jwh/Documents/Tesla/tensorflow-1.8.0/tensorflow/contrib/makefile/downloads/absl
   /usr/local/include/eigen3
   ) 
add_executable(tf_test  tf.cpp) 
target_link_libraries(tf_test tensorflow_cc tensorflow_framework)

但是在编译【1】中提供的工程时出现了错误,没有解决

这个错误时英文编译时,tensorfow源文件没下载全,执行一下命令

./tensorflow/contrib/makefile/download_dependencies.sh

执行此命令会下载一些文件,在makefile文件夹多了一个downloads文件夹

之后继续执行make 命令,继续出错

感觉像是C语言编译器的错误,不知怎么解决

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值