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. IE下Ajax 提交中文乱码问题
  2. Android仿QQ界面
  3. docker容器 cpu memory 资源限制
  4. Interview Q A 小明一家5口如何过桥
  5. mysql 变量set
  6. Prompt-based Language Models:模版增强语言模型小结
  7. The server time zone value ‘XXXXXX’ is unrecognized or represents more than one time zone
  8. 家用计算机注意哪些参数,电脑小白买内存条要注意哪些?主要看哪些参数?这些知识要掌握...
  9. redux引用多个中间件_如何轻松创建您的第一个Redux中间件
  10. python权威指南 pdf_Ansible权威指南pdf txt mobi下载及读书笔记
  11. 怎么让照片变年轻_女生都想要变年轻,但是应该怎么做呐?其实有了背带裤就可以搞定...
  12. 存储技术复杂性的代价
  13. 物体检测,用于检测红灯笼demo(含训练代码)
  14. mysql返回李连杰的姓_李连杰:我爷爷不姓李,说出名字后害怕你们没胆量播出去...
  15. mac 设置锁屏快捷键
  16. Android Netd
  17. 苹果手机对html的要求,《原神》ios要什么配置 ios端配置要求一览
  18. Datawhale 数据挖掘新手入门笔记 -Task5 模型融合
  19. PAT.A1010 Radix
  20. 电脑硬件及电脑配置知识大全

热门文章

  1. mysql修改字段类型为smallint_mysql更新 unsigned 的 smallint 类型字段出现65535
  2. linux装oracle11g启动失败,Oracle11GSELinux原因启动失败的解决办法
  3. linux多进程server 进程池_Python 中的进程池与多进程
  4. asp.net oracle参数传递,asp.net – Oracle参数问题中的链接数据库
  5. 一站式开源测试平台:MeterSphere
  6. 一个比传统数据库快 100-1000 倍的数据库
  7. Spring Boot 中关于 %2e 的 Trick
  8. 皮一皮:成人世界的潜台词...
  9. Nacos 集群部署模式最佳实践
  10. 如何在Mysql的Docker容器启动时初始化数据库