Tensorflow c api
Table of Contents
编译使用tensorflow c版本动态链接库
TensorFlow C++ Session API reference documentation
Classes
Structs
编译使用tensorflow c版本动态链接库
注意:如果是linux或mac os操作系统,可以参考https://www.tensorflow.org/install/install_c,直接下载对应的so库和头文件,然后跳到步骤4。如果不能使用,再从源码编译。
1.下载tensorflow源码
git clone --recursive https://github.com/tensorflow/tensorflow
假设路径为:tensorflow_repo_path
2.安装bazel
mac os可以直接brew install bazel,没法联网安装的可以下载sh文件安装,也很简单
3.编译源码,生成so库
进入tensorflow_repo_path/tensorflow文件夹,执行:
bazel build :libtensorflow.so
4.添加必要路径
最简单方法是直接把include中文件复制到/usr/local/include,把lib中文件复制到/usr/local/lib,或者修改对应的环境变量LD_LIBRARY_PATH,并在编译的时候指定 include目录。
5.编译运行测试程序
依然是https://www.tensorflow.org/install/install_c上的内容,直接把下面代码保存成helloTF.c文件
#include <stdio.h>
#include <tensorflow/c/c_api.h>int main() {printf(“Hello from TensorFlow C library version %s\n”, TF_Version());return 0;
}
如果使用gcc编译,除了-L和-I中添加对应的库、头文件路径,还要加上-ltensorflow,如果使用xcode这类ide,也要在ide中添加相应路径、链接库
编译成功后,把libtensorflow.so复制到可执行文件同一目录下(如果已经在/usr/local/lib或者在LD_LIBRARY_PATH中就不需要复制了),运行可执行文件,得到下面 的结果,即说明运行成功:
6.其他
tensorflow目前已经支持多种语言,并且可以编译对应的库文件,具体可以参考tensorflow_repo_path/tensorflow/BUILD文件,这里面有多个编译目标,c++的目前 也已经支持,不过相关参考资料太少,只有tensorflow_repo_path/tensorflow/cc/tutorials/example_trainer.cc一个例子。
7.参考资料
https://medium.com/jim-fleming/loading-tensorflow-graphs-via-host-languages-be10fd81876f
https://medium.com/jim-fleming/loading-a-tensorflow-graph-with-the-c-api-4caaff88463f#.z4qeoyfb0
https://www.tensorflow.org/install/install_c
TensorFlow C++ Session API reference documentation
TensorFlow's public C++ API includes only the API for executing graphs, as of version 0.5. To control the execution of a graph from C++:
- Build the computation graph using the Python API.
- Use tf.train.write_graph() to write the graph to a file.
Load the graph using the C++ Session API. For example:
// Reads a model graph definition from disk, and creates a session object you
// can use to run it.
Status LoadGraph(string graph_file_name, Session** session) {GraphDef graph_def;TF_RETURN_IF_ERROR(ReadBinaryProto(Env::Default(), graph_file_name, &graph_def));TF_RETURN_IF_ERROR(NewSession(SessionOptions(), session));TF_RETURN_IF_ERROR((*session)->Create(graph_def));return Status::OK();
}
Run the graph with a call to
session->Run()
Classes
- tensorflow::Env
- tensorflow::EnvWrapper
- tensorflow::RandomAccessFile
- tensorflow::Session
- tensorflow::Status
- tensorflow::Tensor
- tensorflow::TensorBuffer
- tensorflow::TensorShape
- tensorflow::TensorShapeIter
- tensorflow::TensorShapeUtils
- tensorflow::Thread
- tensorflow::WritableFile
Structs
- tensorflow::SessionOptions
- tensorflow::Status::State
- tensorflow::TensorShapeDim
- tensorflow::ThreadOptions
Link:http://www.tensorfly.cn/tfdoc/api_docs/cc/index.html
Tensorflow c api相关推荐
- TensorFlow Keras API用法
TensorFlow Keras API用法 Keras 是与 TensorFlow 一起使用的更高级别的作为后端的 API.添加层就像添加一行代码一样简单.在模型架构之后,使用一行代码,可以编译和拟 ...
- Tensorflow C++ API调用Keras模型实现RGB图像语义分割
我的实验是基于PSPNet模型实现二维图像的语义分割,下面的代码直接从得到的h5文件开始往下做... 也不知道是自己的检索能力出现了问题还是咋回事,搜遍全网都没有可以直接拿来用的语义分割代码,东拼西凑 ...
- 今晚直播 | 谷歌资深工程师手把手教你使用TensorFlow最新API构建学习模型
目前,深度学习的研究和应用大受追捧,各种开源的深度学习框架层出不穷.TensorFlow 作为目前最受欢迎的深度学习框架,已经在 GitHub 上获得了 112194 个 star,受欢迎程序可见一斑 ...
- Ubuntu Tensorflow object_detection API 目标检测环境搭建
Ubuntu 16.04下安装TensorFlow Object Detection API(对象检测API) Ubuntu 16.04下搭建TensorFlow运行环境(用Anaconda) ...
- tensorflow函数API总结
tensorflow函数API总结: 首推官网查询 tf.keras.Input:创建输入层 别名: tf.keras.Input tf.keras.layers.Input tf.keras.Inp ...
- Tensorflow高级API的进阶--利用tf.contrib.learn建立输入函数
正文共5958个字,预计阅读时间15分钟. 笔记整理者:王小草 笔记整理时间:2017年2月27日 笔记对应的官方文档:https://www.tensorflow.org/get_started/i ...
- 一文初探Tensorflow高级API使用(初学者篇)
正文共5917个字,3张图,预计阅读时间34分钟. 笔记整理者:王小草 笔记整理时间:2017年2月26日 对应的官方文档地址:https://www.tensorflow.org/get_start ...
- OpenCV Tensorflow C++API Protobuf eigen3 OpenBlas 编译过程
OpenCV Tensorflow C++API Protobuf eigen3 OpenBlas 编译过程 文章目录 OpenCV Tensorflow C++API Protobuf eigen3 ...
- TensorFlow 官方API 中文版(二)
TensorFlow 官方API 中文版(二) 7/19/2016 6:55:43 AM 1.1.1 class tf.Graph(续) tf.Graph.devide(device_name_or_ ...
- Tensorflow高级API系列(一):Estimator是什么?
前言 最近一直在做CTR预估的模型,为了应对大规模数据和导出更加易用的线上模型导出模型的问题,不得不放弃session,placehoder这种比较原始的tensorflow编码.使用更加高级的est ...
最新文章
- [引]ASP.NET 中 事务处理(SqlTransaction)示例
- 互联网共鸣之声:2018年或成为云计算转折之年
- 认识top的显示结果
- python中panel不接受参数_Python基础之只接收关键字参数的函数
- Zepto.js简介
- oracle 求时间差年,Oracle计算时间差常用函数
- [笔试题目] 美团2015年9月后端开发工程师笔试题
- 体质测试数据统计软件,[体质测试数据excel自动统计表]体质测试数据Excel自动统计模板的研制...
- 异构计算黄金时代下,超强异构计算服务器FP5468G2将会带来哪些变革?
- IT = 加班多?外国小哥打破“魔咒”:“每天工作 10 分钟,工资近 9 万美元!”...
- 任意电脑登录MySQL_使用批处理命令注册运行mysql数据库,无需注册mysql服务,可以在任意电脑登录使用...
- .net连接DB2的异常SQL0666 - SQL query exceeds specified time limit or storage limit.错误处理
- sybil attack (女巫攻击)
- Python3网络爬虫:腾讯新闻App的广告数据抓取
- systemUI之statusBar
- 计算机图形图像处理专业知识,计算机图形图像处理专业技术的突破研究
- 反思|开启B站少女心模式,探究APP换肤机制的设计与实现
- 电脑桌面怎么设置html背景图,css中如何设置背景图片?
- XMind软件非试用版本下载(亲测有效)
- python所有单词和语法_单词积累:常见,阅读单词和语法重点(全部都要)
热门文章
- Mybatis判断表是否存在
- Jenkins+GitLab+Docker+SpringCloud+Kubernetes实现可持续自动化微服务
- DataGrip使用入门
- v-if和v-for一起用踩过的坑
- VS2013 配置全局 VC++目录
- bzoj3159 决战
- 老李分享:接电话扩展之uiautomator 1
- JAVA_java.util.Date与java.sql.Date相互转换
- 适合办公的笔记本电脑_最适合你的十款笔记本电脑
- html自动生成工具_「写论文神器」一个好用的论文自动生成工具,内含30w 文献数据...