在Windows*上极速飞艇平台定制开发编译Tensorflow教程

最简单极速飞艇平台定制开发【大神源码论坛】dsluntan.com 【布丁源码论坛】budingbbs.com 企娥3393756370的 Tensorflow 的安装方法是在 pip 一键式安装官方预编译好的包

pip install tensorflow

通常这种预编译的包的编译参数选择是为了最大兼容性而不是为了最优性能,导致在使用过程中,每次运行代码都会输出一大堆的 warning 信息。例如在安装了谷歌官方的 Tensorflow 1.3.0 包后,运行以下测试代码时

import tensorflow as tf
 
hello = tf.constant(‘Hello, TensorFlow!‘)
sess = tf.Session()
print(sess.run(hello))

Console 会输出

C:\Users\jgu\Anaconda3\python.exe C:/Users/sandman/PycharmProjects/untitled/tf_helloworld.py
2017-10-27 13:42:20.005261: W C:\work\tensorflow-1.3.1\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn‘t compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-10-27 13:42:20.005475: W C:\work\tensorflow-1.3.1\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn‘t compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
b‘Hello, TensorFlow!‘
 
Process finished with exit code 0

表示此 Tensorflow 版本只用到了 CPU SSE 指令集优化,可以运行在很多老架构的 CPU 指令集上。
为了充分利用 AVX/AVX2 来加速 Tensorflow 的 CPU 版本的计算速度,需要自己下载 Tensorflow 的源码,在编译时使用这些指令集。
以下教程基于最新的Tensorflow 1.3.1源码,利用用Visual Studio 2015/Visual Studio 2017来编译一个基于 AVX/AVX2 的 CPU 版本的 Tensorflow Python 安装包。

编译过程

准备工作

VS2015编译过程

  • 打开 VS2015 64 位命令行编译环境
  • 在命令行环境中进入 Tensorflow 的源码路径 tensorflow-1.3.1\tensorflow\contrib\cmake
    新建一个文件夹 build2015,进入 build2015 文件夹
  • 用 CMake 生成 VS2015 的编译项目
    C:\...\build2015>cmake .. -A x64 -DCMAKE_BUILD_TYPE=Release
    -DSWIG_EXECUTABLE=C:\work\swigwin-3.0.12\swig.exe
    -DPYTHON_EXECUTABLE="C:\Users\jgu23\AppData\Local\Continuum\Anaconda3\python.exe"
    -DPYTHON_LIBRARIES="C:\Users\jgu23\AppData\Local\Continuum\Anaconda3\libs\python36.lib"
    -Dtensorflow_WIN_CPU_SIMD_OPTIONS=/arch:AVX
  • 用 MSBuild 编译生成 Tensorflow 的 pip 安装包
    C:\...\build2015>MSBuild /p:Configuration=Release tf_python_build_pip_package.vcxproj
    编译时需要联网,git 会从网上下载必要的项目包
    经过漫长的编译过程(我的编译环境是 i5 7440hq + 12G 内存)
  • pip 安装 Tensorflow pip 安装包
    如果编译没错误的话,进入到 C:\...\build2015\tf_python\dist 目录下,可以看到一个文件
    tensorflow-1.3.1-cp36-cp36m-win_amd64.whl
    这个就是编译出来的 Tensorflow 安装包
    在进入 Anaconda Prompt 界面

    进入到 C:\...\build2017\tf_python\dist 目录下,输入“pip install tensorflow-1.3.1-cp36-cp36m-win_amd64.whl”
    到这里,Tensorflow 就已经编译安装成功了
  • 最后验证一下
    运行代码
    import tensorflow as tf
     
    hello = tf.constant(‘Hello, TensorFlow!‘)
    sess = tf.Session()
    print(sess.run(hello))     

    Console 输出

    C:\Users\jgu\Anaconda3\python.exe C:/Users/sandman/PycharmProjects/untitled/tf_helloworld.py
    2017-10-27 13:48:20.005261: W C:\work\tensorflow-1.3.1\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn‘t compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
    b‘Hello, TensorFlow!‘

    说明这个 Tensorflow 包支持 AVX 指令集

  • 注意
    VS2015 编译 Tensorflow 最高只支持到 AVX, 如果 CMake 生成编译项目时指定 CPU 指令集支持到 AVX2,编译时将出现 error C3861: ‘xxx‘: identifier not found 错误。要支持 AVX2 指令集,必须用 VS2017 编译

    查看大图

VS2017编译过程

  • 打开 VS2017 64 位命令行编译环境
  • 在命令行环境中进入 Tensorflow 的源码路径 tensorflow-1.3.1\tensorflow\contrib\cmake
    新建一个文件夹 build2017,进入 build2017 文件夹
  • 用 CMake 生成 VS2017 的编译项目
    C:\...\build2017>cmake .. -A x64 -DCMAKE_BUILD_TYPE=Release
    -DSWIG_EXECUTABLE=C:\work\swigwin-3.0.12\swig.exe
    -DPYTHON_EXECUTABLE="C:\Users\jgu23\AppData\Local\Continuum\Anaconda3\python.exe"
    -DPYTHON_LIBRARIES="C:\Users\jgu23\AppData\Local\Continuum\Anaconda3\libs\python36.lib"
    -Dtensorflow_WIN_CPU_SIMD_OPTIONS=/arch:AVX2
  • 这里比 VS2015 的编译多了一步
    用 VS2017 打开 tf_core_kernels.vcxproj

    进入 Properties->Configuration Properties->VC++ Directories->Executable Directories

    将 Executable Directories下的 $(VC_ExecutablePath_x64) 改为 $(VC_ExecutablePath_x64_x64)


    保存项目,退出

  • 用 MSBuild 编译生成 Tensorflow 的 pip 安装包
    C:\...\build2017>MSBuild /p:Configuration=Release tf_python_build_pip_package.vcxproj
    编译时需要联网,git 会从网上下载必要的项目包
    经过漫长的编译过程(我的编译环境是 i5 7440hq + 12G 内存)
  • pip安装 Tensorflow 安装包
    如果编译没错误的话,进入到 C:\...\build2017\tf_python\dist目录下,可以看到一个文件
    tensorflow-1.3.1-cp36-cp36m-win_amd64.whl
    这个就是 Tensorflow 的安装包
    在进入 Anaconda Prompt 界面

    进入到 C:\...\build2017\tf_python\dist 目录下,输入 “pip install tensorflow-1.3.1-cp36-cp36m-win_amd64.whl”
    到这里,Tensorflow 就已经编译安装成功了
  • 最后验证一下
    运行代码
    import tensorflow as tf
     
    hello = tf.constant(‘Hello, TensorFlow!‘)
    sess = tf.Session()
    print(sess.run(hello))

    Console输出

    C:\Users\jgu\Anaconda3\python.exe C:/Users/sandman/PycharmProjects/untitled/tf_helloworld.py
    b‘Hello, TensorFlow!‘
     
    Process finished with exit code 0

    没有任何 warning 输出,说明这个 Tensorflow 包支持 AVX2 指令集

常见错误及解决方法

编译 re2.vcxproj 时出错

warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
以及
Error C2001: Newline in constant

错误原因:此错误和编译平台的 windows 操作系统的locale设为中文有关,英文的 windows 没有这个错误
解决办法: 修改 CMakeCache.txt,让 MSBuild 编译这个项目时,强制按照 utf-8 编码文件的格式来解析文件
进入 C:\...\tensorflow-1.3.1\tensorflow\contrib\cmake\build2017\re2\src\re2 目录
用文本编辑器打开 CMakeCache.txt,找到以下2行

在 CMAKE_CXX_FLAGS_RELEASE 这里添加蓝色部分,修改为
CMAKE_CXX_FLAGS_RELEASE:STRING=/MD /O2 /Ob2 /DNDEBUG /source-charset:utf-8

编译 tf_core_kernels.vcxproj 时出错

fatal error c1060: the compiler is out of heap space
以及
fatal error C1002: compiler is out of heap space in pass 2

错误原因:VS 编译环境默认的编译工具链为32位,Tensorflow 编译时会消耗大量的内存,导致编译器消耗的内存超出了32位编译器的寻址范围。
解决方法:

  1. VS2015
    需要运行 64 位命令行编译环境,在“开始”菜单中选择运行 “VS2015 x64 Native Tools Command Prompt”,如本文 2.2 章中“打开 VS2015 64 位命令行编译环境”部分所示
    或者在命令行里手工切换
    首先进入 VS2015 的安装目录 “cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC”
    输入“vcvarsall amd64”
    参考 MSDN “How to: Enable a 64-Bit Visual C++ Toolset on the Command Line”
    https://msdn.microsoft.com/en-us/library/x4d2c09s.aspx
  2. VS2017
    可能因为 Tensorflow 项目中 CMake 脚本对 VS2017 支持不好,所以无法按照 VS2015 的修改办法来通过指定64位编译环境的方法来解决这个问题。我们需要用 VS2017 打开 tf_core_kernels.vcxproj,手工将 Properties->Configuration Properties->VC++ Directories->Executable Directories 下的$(VC_ExecutablePath_x64)改为$(VC_ExecutablePath_x64_x64)
    如本文 2.3 章中“VS2017 打开 tf_core_kernels.vcxproj”部分所示

结论

通过手工编译 Tensorflow 源码来支持 AVX/AVX2 指令,可以消除运行 Tensorflow 程序时烦人的 warning 提示,并且可以获得比官方预编译版本更快的 Tensorflow 学习/推理速度,节省了 Tensorflow 开发者的时间。

原文地址:https://www.cnblogs.com/DwightDuncan/p/9225322.html

时间: 2024-08-27 21:32:23

在Windows*上极速飞艇平台定制开发编译Tensorflow教程的相关文章

什么是分布式锁极速飞艇平台开发

分布式锁,是控制分布式系统之间同步访问共享资源的一种方式.在分布式系统中,常常需要协调他们的动作.如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁. 分布式锁的本质可以看作是特殊的普通锁,它的竞争者不是普通的进程和线程,它的竞争者分布在不同的主机上,需要通过网络来相互通信,不同的主机分布和网络的不确定性给分布式锁的实现和普通锁有着很大的不同. 什么是分布式锁极速飞艇平台开发,需要请搜

HiEX平台线上挖矿商城软件定制开发

HiEX区块链挖矿理财系统app开发( 董经理 156微9242电2517同号).HiEX平台持币挖矿代币理财系统开发.HiEX平台挖矿持币生息理财app系统开发.HiEX平台线上挖矿商城APP定制开发HiEX区块链模式开发,HiEX挖矿app定制开发 新时期,软件技术发展势头强劲,是创新计算机网络技术,逐步将一些远程控制.网络支持成为可能.但在开发软件技术的同时,也忽略了管理工作的重要意义.因为软件工程自身的特殊性,而且发展的时间也不长,其管理工作涉及面比较复杂,所以随着技术的发展,计算机软件

北京赛车平台定制开发分布式之redis复习精讲

1.为什么使用redis 北京赛车平台定制开发[大神源码论坛]dsluntan.com [布丁源码论坛]budingbbs.com 企娥3393756370 分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发.当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis.因此,这个问题主要从性能和并发两个角度去答.回答:如下所示,分为两点(一)性能如下图所示,我们在碰到需要执行

什么是区块链北京赛车源码下载平台定制开发钱包?

在介绍区块链钱包之前,我们先详细介绍下比特币的地址生成过程. 北京赛车源码下载平台定制开发[大神源码论坛]dsluntan.com [布丁源码论坛]budingbbs.com 企娥3393756370 红黑玩法定制开发 龙虎和玩法定制开发 大小单双和玩法定制开发 斗牛玩法定制开发 需要的请联系客服:3393756370 大的流程是:私钥-->公钥-->地址. 先啰嗦一点计算机知识:位,字节,字,KB,MB 位:"位(bit)"是电子计算机中最小的数据单位.每一位的状态只能是

Java创建极速飞艇平台出租线程的三种方式

(1)定义Thread类的子类,极速飞艇平台出租[企鹅21717-93408]并重写该类的run方法,该run方法的方法体就代 表了线程要完成的任务.因此把run()方法称为执行体.(2)创建Thread子类的实例,即创建了线程对象.(3)调用线程对象的start()方法来启动该线程. 二.通过Runnable接口创建线程类(1)定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体是该线程的线程执行体.(2)创建 Runnable实现类的实例,并依此实例作为T

【python安装】Windows上安装和创建python开发环境

1. 在 windows10 上安装python开发环境 Linux和Mac OS都自带python环境,但是Windows没有,需要自行安装. 第1步:访问 python官网,下载Windows平台下的安装包 地址:https://www.python.org/downloads/ 选择下载3.X的版本,我选择的是3.6.6的版本 双击下载完的文件python-3.6.6-amd64.exe,进入安装环节,按步骤完成安装.(我选的第一个Install Now默认安装.) 第2步:设置环境变量.

类似区块狗平台定制开发系统

华登高通区块宠物狗,找蔡生:191电5743微0737详细了解,怎么激活账号?怎么注册?怎么充值微分?很多朋友问华登区块狗怎么赚钱?怎么能抢到宠物狗?区块狗软件开发,区块狗模式定制,区块狗平台定制,区块狗app源码,区块狗系统介绍,开发区块狗系统费用,区块狗系统开发案例,现成区块狗软件,区块狗app源码开发公司 一.华登区块宠物狗是什么? 华登区宠物狗是基于区块链技术开发的一种独有的.可复制的.增值的.可收藏的.可篡改的区块链数字宠物.每只宠物狗都是独一无二的个体,甜美.独有.富有.Block宠

类似区块狗平台定制开发

华登高通区块宠物狗,找蔡生:191电5743微0737详细了解,怎么激活账号?怎么注册?怎么充值微分?很多朋友问华登区块狗怎么赚钱?怎么能抢到宠物狗?区块狗软件开发,区块狗模式定制,区块狗平台定制,区块狗app源码,区块狗系统介绍,开发区块狗系统费用,区块狗系统开发案例,现成区块狗软件,区块狗app源码开发公司 一.华登区块宠物狗是什么? 华登区宠物狗是基于区块链技术开发的一种独有的.可复制的.增值的.可收藏的.可篡改的区块链数字宠物.每只宠物狗都是独一无二的个体,甜美.独有.富有.Block宠

在Windows上搭建React Native Android开发环境

安卓环境配置 安装JDK 安装完成后,使用命令行检查版本 java -version 安装Android Studio 以及SDK 下载AS和SDK,建议使用http://www.androiddevtools.cn/,这里整理得比较清晰,SDK下载可能要使用国内镜像,具体使用上面的网址有介绍. 这里需要注意设置环境变量ANDROID_HOME 1. 打开控制面板,选择系统和安全->系统->高级系统设置->高级->环境变量->新建,变量名填写ANDROID_HOME,变量值填