tensorflow c/c++库使用方法

C++部署TensorFlow模型 安装好C++版的TensorFlow之后,我们就可以用C++来部署python训练好的TensorFlow模型了。安装C++版的TensorFlow的教程可以参考这里。部署TensorFlow模型主要分为两步,第一步是用python训练模型,然后保存模型为.pb格式的二进制文件;第二步则是在C++中加载python保存的模型并进行预测。 1、python训练模型并保存 2、使用C++加... 阅读详情

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";
        return 1;
    }
    cout << "Session successfully created.\n";
}

复制代码

 

4.生成可执行文件

把libtensorflow_cc.so文件放在lib文件夹下,代码放在src文件夹下,编写cmakelist.txt,具体文件结构如下:

CMakeLists.txt

/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可执行文件,执行无误即大功告成

TensorFlow C++笔记:安装、模型加载推理及构建计算图,test ok Tensor类的构造函数无法指定张量值,如需用特定值定义一个张量可以使用Input::Initializer,文档描述:Initializer能够从C++基本类型常量或初始化列表(initializer lists)构建Input对象,代表一个多维数组。文档描述:一个Input类代表一个能作为算子的操作数(operand)的张量,一个Output类代表算子输出的张量。想要以特定模式赋值的张量,可以考虑在array_ops.h里查找想要的算子,例如Fill算子以特定值赋给张量的所有元素。 阅读详情

相关推荐

Tensorflow Lite Android native层C/C++开发

Tensorflow Lite Android C/C++ 1, Tensorflow Lite Android NDK编译编译native 请参考文章Tensorflow源码编译。 libtensorflowlite_jni.so为native,libtensorflowlite.jar所实现java接口,libtensorflowlite-native-header.jar为...

mandagod的博客 3497

tensorflow C++动态编译

目录 编译安装Bazel 编译libtensorflow_cc.so 编译Protobuf和Eigen 整理文件和头文件 测试示例 在虚拟机(无GPU)CentOS 7.6上编译TensorFlow 1.13版本的C++动态,以及整理相应的头文件。完成后,只需要文件以及头文件即可用C++ API调用TensorFlow. 这样的好处是自己的工程可以自由选择编译工具,而不需要依赖谷...

图像研究猿的专栏 6272

c/c++调用python程序且含tensorflow第三方

对于纯python程序而言,用c程序来调用是比较适合的,如果python程序中包含了其他第三方,则调用极可能出错,且不易查明原因。如笔者曾用c程序调用包含tensorflow的python程序,有的可以成功,有的则卡在某条语句,百般尝试也未能实现。 以下程序编译环境为VS2013,所做设置也为调用tensorflow所准备,对于普通的python调用而言只多不少,: 1、环境配置 需要安装ana...

Ben 7201

Tensorflow 模型 C++部署实战

因公司要求个人不得授课和兼职原因,麻烦请把我的课程全部下架,联系不到你们的客服,谢谢!

TensorflowC++部署系列(一):环境配置

tensorflow作为一个著名的开源深度学习框架,其在python平台的神经网络模型搭建、训练和测试等是很齐全的,但其在C++端的设计方面性能相对较差。在实际工程中,C++项目具有更省时的优点,因此基于C++tensorflow的开发是很重要的。 一些比较知名的网络模型,例如yolo-v3系列等的C++代码较为全面,一定程度属于定制的。 然而对于一些自己编写的网络模型的支持方面,我们往往需要自己来配置环境。坦白说,笔者在配置环境方面花费了很多时间,参考了很多优秀的资料,但最后都不尽如意。作为一个小白

weixin_41068770的博客 5961

python调用tensorflow_tensorflow c/c++使用方法

tensorflow目前支持最好的语言还是python,但大部分服务都用C++ or Java开发,一般采用动态链接(.so)方式调用算法,因此tensorflow的c/c++ API还是有必要熟悉下,而且经过本人测试,相同算法,c接口相比python速度更快。下面讲解如何让程序调用tensorflow c/c++1.编译先在github上下载tensorflow源码,执行./configu...

weixin_32916125的博客 1247

编译 TensorFlow 的 C/C++ 接口

TensorFlow 的 Python 接口由于其方便性和实用性而大受欢迎,但实际应用中我们可能还需要其它编程语言的接口,本文将介绍如何编译 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 su...

seniusen的博客 1万+

anaconda、pip的区别及选择

作者:PP鲁 链接:https://www.zhihu.com/question/395145313/answer/1257660174 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 对于主流机器学习,比如TensorFlow、PyTorch、LightGBM等,主要都是使用C/C++编写的。C/C++有如下优势: 如果用Python语言实现,Python解释器(例如CPython)会将Python代码翻译转化成机器能够理解的代码。而C/C++代码被直接编译成机.

hello_program_world的博客 2046

ubuntu+anaconda+tensorflow 及相关问题

配置tensorflow部分参考:https://blog.csdn.net/XUTIAN1129/article/details/78997633 装完anaconda, source ~/.bashrc后, 可以直接 pip install tensorflow-gpu , 珍爱生命,远离bazel。但想要c/c++调用tf的时候远离不了,还是得bazel编译安装tf-gpu 对于:...

weixin_30312659的博客 130

TensorFlow Lite C/C++ 分布使用教程

TensorFlow Lite C/C++ 分布使用教程 项目介绍 TensorFlow Lite C/C++ 分布是一个开源项目,旨在提供 TensorFlow Lite 的 C 和 C++ ,使得开发者能够在不同的平台上(如 Android 和 iOS)使用相同的代码进行对象检测。该项目由 ValYouW 维护,提供了动态、GPU 委托以及 iOS 框架,支持跨平台开发。 项目快速启...

gitblog_01022的博客 1130

【亲测免费】 TensorFlow Lite C/C++ 分布使用教程

TensorFlow Lite C/C++ 分布使用教程 1. 项目的目录结构及介绍 TensorFlow Lite C/C++ 分布的目录结构如下: tflite-dist/ ├── README.md ├── LICENSE ├── how-to-build.md ├── include/ │ └── tensorflow/ │ └── lite/ │ ...

gitblog_00908的博客 1196

Keras2cpp vs TensorFlow C API:哪个更适合你的模型部署需求?

在深度学习模型部署领域,选择合适的工具直接影响项目的性能和开发效率。Keras2cpp作为一款轻量级工具,专注于将Keras神经网络模型转换为纯C++代码,而TensorFlow C API则提供了官方的底层接口支持。本文将从核心功能、适用场景、性能表现等维度,为你深入对比两者的差异,助你做出更优的技术选型。 ## 📌 核心功能对比:轻量转换 vs 官方生态 ### Keras2cpp:专注

gitblog_00806的博客 726

TensorFlow C++

libtensorflow_cc.so 核心C++。包含了TensorFlow C++ API的所有功能,如构建图、运行会话等。无论哪种方式,这个几乎都是必需的。

深之JohnChen的专栏 692

Centos 编译TensorFlow C/C++ libtensorflow.so libtensorflow_framework.so

安装依赖 yum -y install automakelibtoollibsysfslibxslt-devel libffi libffi-devel python-devel gcc openssl openssl-develsqlite-devel pip install sixnumpywheelcoverage mock 安装CMake 从https://cmake.org/download/选择最新的版本 wget https://github.com/Kitware/CMa...

Just for fun的专栏 1382
上一篇: 十大必掌握C++11新特性
下一篇: Ceres入门
HFKuAng
博客等级 码龄11年 69粉丝 13原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值