pip安装 Tensorflow 安装包
最简单的 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 (编译支持 AVX 的 Tensorflow 包)或 VS2017 (编译支持 AVX2 的 Tensorflow 包)
Anaconda + Python 3.6 64位版本
https://www.anaconda.com
Swigwin 3.0.12
http://www.swig.org/
cmake-3.9.3-win64-x64
https://cmake.org/
Git-2.14.2-64-bit
https://git-scm.com/
Tensorflow源码,目前最新版本为1.3.1
https://github.com/tensorflow/tensorflow
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:www.tygj178.com /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-www.dashuju178.com>VC++ Directories->Executable Directories
将 Executable Directories下的 $www.fengshen157.com/ (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,www.yongshiyule178.com 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位编译器的寻址范围。
解决方法:
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
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 开发者的时间。
pip安装 Tensorflow 安装包的更多相关文章
- 【pycharm】在pycharm上,使用python的pip安装tensorflow过程
如题:在pycharm上,使用python的pip安装tensorflow过程 最后成功安装的版本信息是: python版本是3.6.5 pip版本是9.0.1 pycharm版本是2018.1 te ...
- Python使用pip安装TensorFlow模块
1.首先确保已经安装python,然后用pip来安装matplotlib模块. 2.进入到cmd窗口下,建议执行python -m pip install -U pip setuptools进行升级. ...
- arcgis安装msi安装包提示"在未标记为正在运行时,调用了RunScript”解决办法
安装msi安装包提示"在未标记为正在运行时,调用了RunScript”解决办法 windows/temp目录相关权限不对,右击temp文件夹,选择管理员获取所有权限.
- Installshield关于.NET安装时需要重启动的处理办法,以及延伸出的重启后继续安装的安装包的一点想法
原文:Installshield关于.NET安装时需要重启动的处理办法,以及延伸出的重启后继续安装的安装包的一点想法 很多朋友做安装包的时候,所打包的软件需要.NET Framework之类的环境,他 ...
- vs2017离线安装且安装包不占用C盘空间
[参考]vs2017离线安装且安装包不占用C盘空间 第一步:下载离线安装包 https://www.visualstudio.com/zh-hans/downloads/ 在官方地址下载vs_prof ...
- 在Win10中,在安装msi安装包的时候常常会出现代码为2502、2503的错误。
前言:在Win10中,在安装msi安装包的时候常常会出现代码为2502.2503的错误.其实这种错误是由于安装权限不足造成的,可以这种msi的安装包不像其他exe的安装程序,在安装包上点击“右键”之后 ...
- Pip安装TensorFlow报错:MemoryError
问题描述 使用pip安装TensorFlow时,一直报错,情况如下: 解决办法 使用如下命令可正常安装: pip3 install --no-cache-dir tenstoflow --no-cac ...
- 趟坑:使用pip安装TensorFlow
这几天在安装TensorFlow,看了很多教程,方法也试了几种. 最后还是用pip安装成功的,过程如下. 1.安装ubuntu后在 系统设置-软件与更新-附加驱动 里,更新N卡驱动. (N卡官网下载 ...
- VS2015 安装mvc4安装包以及vs2010 sp1后导致Razor语法失效代码不高亮(能正常运行)/视图页面无法智能提示(.cshtml)解决办法
VS2015默认asp.net mvc 版本为5.0以上,默认不支持创建5.0以下的版本.所以想要使用mvc 4.0只能单独安装.在网上搜了几篇教程后在微软官网下载了Visual Studio 201 ...
随机推荐
- .net后台使用post方式对指定地址的方法传值并且获取结果的方法
/// <summary> /// .net 后台 post http地址请求 /// </summary> /// <param name="uri" ...
- js各运算符的执行顺序
本文原链接:https://www.sojson.com/operation/javascript.html https://www.jianshu.com/p/d569c6ca1060 JavaSc ...
- Maven settings.xml配置详解
首先:Maven中央仓库的搜索全部公共jar包的地址是,http://search.maven.org/ ===Maven基础-默认中央仓库============================== ...
- 2018.2.12 PHP 如何读取一亿行的大文件
PHP 如何读取一亿行的大文件 我们可能在很多场景下需要用 PHP 读取大文件,之后进行处理,如果你没有相关的经验可以看下,希望能给你带来一些启发. 模拟场景 我们有一个 1亿 行,大小大概为 3G ...
- Python01 VSCode开发环境和入门程序
1.Python的下载和安装 最新版本python3.7.3 https://www.python.org/downloads/release/python-373/ web-based: 在线安装包 ...
- Bootstrap历练实例:语境色彩的面板
带语境色彩的面板 使用语境状态类 panel-primary.panel-success.panel-info.panel-warning.panel-danger,来设置带语境色彩的面板,实例如下: ...
- java在线聊天项目1.3版设计好友列表框功能补充,因只要用户登录就发送一串新列表,导致不同客户端好友列表不同问题
解决完毕后效果图: 好友列表Vector添加的时候进行判断,如果有相同的则不添加 int flag=0; for (int i = 0; i < names.size(); i++) { if ...
- 【最大流】bzoj1711: [Usaco2007 Open]Dining吃饭
正在网络流入门(原来这种题用网络流做) Description 农夫JOHN为牛们做了很好的食品,但是牛吃饭很挑食. 每一头牛只喜欢吃一些食品和饮料而别的一概不吃.虽然他不一定能把所有牛喂饱,他还是想 ...
- [CF] 180 E. Cubes
对同类元素双指针扫描 #include<iostream> #include<cstring> #include<cstdio> #include<vecto ...
- Windows 10+Ubuntu双系统修复Ubuntu启动引导
U盘启动,联网 $ sudo su sudo add-apt add-apt-repository ppa:yannubuntu/boot-repair apt-get update apt-get ...