tensorflow即将发布1.5版本,作为工业界应用最广的深度学习框架,它以其强大的泛用性和丰富的社区环境而广受好评。tensorflow1.5新性能。

参考:https://blog.csdn.net/h8832077/article/details/78988488

但是tfboys/tfgirls在深入使用后都会遇到不同的问题,其中最常遇见的有: 
1. 如何在c++代码中使用tensorflow? 
2. 如何使用特定的CUDA版本编译tensorflow? 
3. 我已经训练好了一个模型,如何在windows环境下复用? 
这篇文章旨在解决1,2问题。3问题以后填坑。

准备工作

老规矩,首先是编译环境: 
OS: windows 10 
IDE: Vs 2015 
其次,需要准备的软件有: 
CMAKE:3.10.1 
SWIG:3.0.12(请下载预编译好的版本) 
CUDA:9.1 
CUDNN:7 
翻墙软件(没有也可以,但我没试过)

以上软件的安装方法请自行百度。对于不想自己编译的童鞋们。文章最末有下载链接,是我编译好的tensorflow1.5-release包(需要cuda9.1+cudnn7),其中包括lib和dll(c++),whl(python)

编译过程

  1. 获取代码 
    首先,到github的tensorflow项目中下载tensorflow代码(熟悉git的同学可以直接使用clone) 

    获取代码以后,你会得到这样一个工程 

  2. 预编译工程(此步骤熟悉cmake的同学可以直接命令行) 
    打开CMAKE软件,设置源代码路径为:tensorflow/contrib/cmake,需要编译的代码放到自己想要的位置,点击config,选择vs2015 win64原生编译工具。此时CMAKE会报错:

    Could NOT find SWIG (missing: SWIG_EXECUTABLE SWIG_DIR)

    勾选tensorflwo_ENABLE_GPU(此项开启GPU支持),tensorflwo_BUILD_SHARED_LIB(此项使工程中添加tensorflow动态库工程),并设置CUDA和CUDNN版本。

    注意1:CUDA版本设置时9.1不需要写成91。 
    注意2:路径中不要包含中文

    上述步骤完毕,点击config,你将会得到一个这样的界面。 
     
    然后点击generate生成工程。 
    生成完的工程是这样的: 

  3. 编译前的准备(如果漏掉某一步骤,可能出错) 
    1.在环境变量中加入

    PreferredToolArchitecture=x64

    2.你需要更改数据格式,找到re2\src\re2\re2\testing\search_test.cc和re2\src\re2\re2\testing\re2_test.cc文件,将其编码方式改为ANSI。 
    3.你需要先编译nsync\src\nsync\nsync.sln和protobuf\src\protobuf\protobuf.sln工程。具体方法为:使用vs2015打开相应sln工程后,选择目标平台(我选择了Release/x64),右键all_build项目,选择build。 
    4.打开翻墙工具(如果没有,请参照问题二处理方式)。打开cmd,输入ping google.com,如果成功,那么设置代理完成。

  4. 编译主工程

    在编译完的工作目录中找到tensorflow.sln工程,使用vs2015打开。 

    可以看到一共250个项目,其中,最重要的两个项目分别是tensorflow和tf_python_build_pip_package。 
    找到tensorflow和tf_python_build_pip_package项目(或者直接选择ALL_BUILD,编译器会按顺序编译所有项目),选择目标平台后,右键build,等待1~2小时,项目就会成功编译好。 
    完成后,你在release中会发现: 
     
    在tf_python/dist中会发现: 
     
    注:whl文件使用方法:cmd输入pip install **.whl

编译中常见的问题

  • cmd.exe退出

    cmd.exe退出。 Faltal Error “compiler is out of heap space”

    请换成64位编译器,参见“编译前的准备/1.”

  • 常量中有换行符… search_test.cc/re2_test.cc 
    编码问题,参见“编译前的准备/2.”

  • 未找到nsyn.lib/protobuf.lib 
    参见“编译前的准备/3.”

  • unable to access https://boringssl.googlesource.com/boringssl 
    带google的网址国内用不了,需翻墙。参照“编译前的准备/4.

这里(密码:qwj6)是我预先编译好的DLL和whl,环境是vs2015/Release/x64+cuda9.1+cudnn7。

最后祝您身体健康,再见!

vs2015编译tensorflow v1.5相关推荐

  1. VS2015编译TensorFlow C++程序完全攻略

    VS2015编译TensorFlow C++程序完全攻略 本文参考和综合了多篇网络博客文章,加以自己的实践,最终终于在windows环境下,编译出可以用于C++程序调用tensorflow API的程 ...

  2. 在Windows*上编译Tensorflow教程

    背景介绍 最简单的 Tensorflow 的安装方法是在 pip 一键式安装官方预编译好的包 pip install tensorflow 通常这种预编译的包的编译参数选择是为了最大兼容性而不是为了最 ...

  3. win10 + bazel-0.20.0 + tensorflow-1.13.1 编译tensorflow GPU版本的C++库

    win10 + bazel-0.20.0 + tensorflow-1.13.1 编译tensorflow GPU版本的C++库 安装所需软件/库 Step1. 安装vs2015,CUDA 10.0和 ...

  4. win10编译tensorflow C++接口

    tensorflow支持最好的编程语言应该是python(应该说大部分深度学习框架支持的最好的语言都是Python),tensorflow的底层说是C/C++编写的,但是,感觉它对C/C++真的很不友 ...

  5. vs2015编译linux源码,使用Visual Studio 2017(VS2017)编译OpenCC 1.0.4 (Open Chinese Convert)源代码...

    摘要:本文介绍了Win7 64位环境下OpenCC(Open Chinese Convert) 1.0.4源码编译全过程,除VS2017外,VS2013以上版本也应该基本同样适用,其他版本的Windo ...

  6. VS2015编译ffmpeg 3.4.2

    https://blog.csdn.net/bobsweetie/article/details/50858358 https://blog.csdn.net/csdnwei/article/deta ...

  7. VS2015编译32位Opencv310(动态库+静态库,文末有下载链接)

    VS2015编译32位Opencv310(动态库+静态库 编译过得,可以直接用的: http://download.csdn.net/download/longzaihuaxia/9802510 之前 ...

  8. VS2015 编译输出的*.lib,*.dll,*.exe的区别

    VS2015编译完C++程序后,一般会在Release或者Debug文件路径下生成多个文件: 例如:输出文件夹下会出现这些文件:*.exe,*.ilk,*.obj,*.pch,*.pdb,*.idb, ...

  9. VS2015编译MuPDF 1.13.0源码(详细)

    前言 要想对PDF进行二次开发,那么MuPDF一定是首选,MuPDF 上的呈现器专为高质量的抗失真图像量身打造,它以像素级的精度高品质呈现文字和文字间的间距,从而获得最高级别的显示保真度,在设备屏幕上 ...

最新文章

  1. python 字典的一些简单操作
  2. 课程设计---图书登记管理系统
  3. Linux(13)-文件权限,chmod
  4. Python线程安全问题及解决方法
  5. linux内核计算次方,linux内核中的循环缓冲去的设计与实现
  6. 别样的唐诗宋词汇——基于Python的量化分析挖掘尝试
  7. 2021年安全生产模拟考试(全国特种作业操作证电工作业-高压电工模拟考试题库一)
  8. winsdk仿win7扫雷
  9. 过程能力分析01—不要忽略“稳定”
  10. uml通信图画法_UML之通信图
  11. [原创] 适合新手的转手绘教程[ JJ ]
  12. 极坐标形式的复数计算器
  13. shp导入Oracle
  14. 日历---C++封装一个Date类,Calendar类,实现简单的日历+日期计算器程序
  15. 推荐系统学习笔记-FNN
  16. springboot默认日志log,控制台不打印mybatis sql执行日志解决办法
  17. MATLAB应用:第二章-基本使用方法
  18. pptp连接服务器无响应,解决PPTP客户端拨号不成功
  19. 详细解读ARM寄存器之CPSR
  20. 鲁棒优化(4):通过yalmip中的kkt命令实现CCG两阶段鲁棒优化

热门文章

  1. 如何使用jquery_免费CDN:jsDelivr+Github 使用方法
  2. BPF Tools 参考链接
  3. mysql修改字段为现在时间_mysql如何修改字段自动生成时间
  4. 用极大似然法估计因子载荷矩阵_第7章-因子分析.ppt
  5. 实验三银行家算法linux,操作系统原理与linux_银行家算法实验报告.doc
  6. linux终端安装playonlinux,Ubuntu安装PlayOnlinux
  7. 计算机病毒是什么文件形式,【文件病毒】文件病毒的格式、危害、特点_什么是文件病毒_佰佰安全网...
  8. html宽度自适应怎么调整li超出隐藏,HTML篇之CSS样式——div ul li 嵌套后解决高度自适应方法...
  9. python foreach用法_使用foreach rdd和foreach在pysp中迭代rdd
  10. 记一次线上偶现的循环依赖问题