Tensorflow编译记

最近公司要用到深度学习去做图像的分类工作,添加到原有的软件中去,于是就尝试了几种方法,不外乎调用python和直接调用深度学习框架的c++api。

因为在调试模型的时候使用的是keras,于是最适合的就是编译tensorflow形成dll。但是公司软件是在windows上运行的,于是就开始了艰难困苦的tensorflow编译之旅。

首先在csdn上找到一大片自己编译的教程,但是都走不通啊,不是这里错就是那里错。

我使用的是vs2015update3社区版,python3.6.6。

最后按照这个博客把tensorflow1.3编译成功了。

https://blog.csdn.net/jiugeshao/article/details/79144438

在编译的时候一定要记得机器上装了java,不然会报莫名的错误,另外在编译的时候记得把re2的cmake重新编译一次。就可以快乐的编译成功,Release和Debug版本都可以编译成功。

运行样例完全正常!!

创建tensor正常,运算正常。

然而因为当前训练模型的时候使用的是tf1.12+keras2.2.4。tensorflow的api在调用模型的时候会报错。(图后补)

查了下,是说tensorflow1.5以上的版本才支持的操作,好吧,又重新陷入了对tensorflow的编译过程。

最终尝试发现,编译tensorflow1.8可以成功。注意在cmake编译的时候使用如下的配置,

因为我是要编译一个cpu版本出来,到时候可以在各类客户机上使用,所以不选ENABLE_GPU。BUILD_SHARED_LIB一定要选,这是编译出来的dll选项。

随后编译的时候Release版本很容易编译通过(要多编译几次,因为tf_core_kernels.vcxproj需要大量的内存,经常编译不过。这里一定要选ENALBE_SNAPPY_SUPPORT。否则就会编译不过。)

但是在C++调用的时候,程序调试时会报错,于是不得不去编译Debug版本,然后发现每次都卡在tf_core_kernels.vcxproj过不去。然后没办法,最终尝试下居然使用程序员命令行的形式编译成功。参见博客:https://blog.csdn.net/dageda1991/article/details/79721333

同样会在编译tf_core_kernels.vcxproj的时候编译不成功,单独编译它就好。再重新编译整个工程,同样是在命令行模式下。最终成功生成.lib和.dll文件。

回头想想过去一周多的时间,真是令人伤感。每天都在查资料,天天就是编译编译编译。不过好歹打通了c++端调用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值