tensorflow-c-api配置
前言:
- 下面的步骤看起来多,其实和配置opencv差不多,由于很多时候看网上的一些教程,一下就跳过了几步,对我这种人来说很不友好,所以我写的就尽量详细了。
- 搭建网络模型、训练都是在python上进行,但是在生产中一般都需要部署到C++环境下,所以一般是用python训练保存模型,拿到C++环境下用。但是配置tensorflow c++ api真的是太太太恶心了,我花了一个星期的时间才弄好(可能也是我太菜了,留下不学无术的眼泪)
- 说说里面的坑,官网给的配置教程很笼统,我按着教程把bazel编译器,vs2019,tensorflow源码下载下来安装好,但是配置过程中发现很多命令是linux下的,也就是有些命令是在windows下,有些在linux下…。另外尝试过用opencv 4.x 调取模型的.pb文件,但是opencv 支持的只有,.pb和.pbtxt同时存在的那种。网上很多教程跟着做也都没有成功。最后是看到github上的一个项目!(https://github.com/serizba/cppflow)
它不用安装tensorflow,也不用编译就可以在c++上读取.pb模型,就只有几个文件,看了下代码突然找到方向:能不能像配置opencv一样配置tensorflow,试了下真成了!
1. 准备:vs2017pro(个人认为,就这种配置方法在vs2015,vs2019也是一样的),libtensorflow c语言库
libtensorflow下载链接:
- windows-cpu版:https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-windows-x86_64-2.3.0.zip
- windows-GPU版:https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-gpu-windows-x86_64-2.3.0.zip
- 所有版本linux、mac、windows链接(一般需要梯子出墙):https://www.tensorflow.org/install/lang_c#linux
- 下载下来解压后的文件结构如下图:
2.3.0版本解压后大概181Mb
2. vs2017属性页配置
- 创建空项目,下面选项是项目名称和路径设置
- 点击确定之后,右击releas|64 -> 添加新项目属性表,下面是名称(tf_lib.props)和路径:
- tf_lib.props创建完成后,配置tf_lib.props属性,右击relase|64属性下的tf_lib
配置vc++ 库目录和包含目录(路径就是存放libtensorflow的地方)
比如我的 - 包含目录:D:\vs2017pro\mydoc\my_tf_example\libtensorflow\include
- 库目录:D:\vs2017pro\mydoc\my_tf_example\libtensorflow\lib
- 添加:连接器-》输入-》附加依赖项:tensorflow.lib
- 点击应用-保存
3. 新建源文件
- 点击视图-》解决方案资源管理器-》右击源文件-》添加-》新建项-》cpp文件
- 代码中写入以下内容
#include <stdio.h>
#include <tensorflow/c/c_api.h>
int main() {
printf("Hello from TensorFlow C library version %s\n", TF_Version());
return 0;
}
4. 生成解决方案
yes!!!!!!!!!!!!
完美!!!!!!!!!!!!!
5. 把tensorflow.dll文件复制到源文件所在文件夹,就可以运行了