pip下载安装了第三方模块,Pycharm里面无法导入,pycharm使用pip安装第三方库
最简单的张量流的安装方法是在点一键式安装官方预编译好的包
点安装张量流
通常这种预编译的包的编译参数选择是为了最大兼容性而不是为了最优性能,导致在使用过程中,每次运行代码都会输出一大堆的警告信息。例如在安装了谷歌官方的张量流1.3.0包后,运行以下测试代码时
将张量流作为法国南部(French Southern Territories的缩写)导入
hello=tf.constant(Hello,TensorFlow!)
sess=tf .会话()
print(sess.run(hello))
安慰会输出
C:\ Users \ jgu \ anaconda 3 \ python。exe C:/Users/sandman/PycharmProjects/untitled/TF _ hello world。巴拉圭
2017-10-27 13:42:20.005261:W C:\ work \张量流-1。3 .1 \张量流\核心\平台\ cpu _ feature _ guard。张量流库没有被编译为使用钽电容指令,但这些指令在您的计算机上是可用的,并且可以加快中央处理器的计算速度。
2017-10-27 13:42:20.005475:W C:\ work \张量流-1。3 .1 \张量流\核心\平台\ cpu _ feature _ guard。张量流库没有被编译为使用AVX2指令,但这些指令在您的计算机上是可用的,并且可以加速中央处理器计算。
你好,张量流!
进程结束,退出代码为0
表示此张量流版本只用到了CPU SSE指令集优化,可以运行在很多老架构的中央处理器指令集上。
为了充分利用AVX/AVX2来加速张量流的中央处理器版本的计算速度,需要自己下载张量流的源码,在编译时使用这些指令集。
以下教程基于最新的张量流1.3.1源码,利用用Visual Studio 2015/2017来编译一个基于AVX/AVX2的中央处理器版本的张量流计算机编程语言安装包。
编译过程
准备工作
VS2015(编译支持钽电容的张量流包)或VS2017(编译支持AVX2的张量流包)
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/
64位
https://git-scm.com/
张量流源码,目前最新版本为1.3.1
https://github.com/tensorflow/tensorflow
VS2015编译过程
打开VS2015 64位命令行编译环境
在命令行环境中进入张量流的源码路径张量流-1 .3 .1 \张量流\贡献\cmake
新建一个文件夹build2015,进入构建2015文件夹
用CMake生成VS2015的编译项目
丙:\.\build2015cmake.-x64-DC make _ BUILD _ TYPE=Release
-ds wig _ EXECUTABLE=C:\ work \ swig win-3。0 .12 \痛饮。可执行程序的扩展名
-DPYTHON _ EXECUTABLE= C:\ Users \ jgu 23 \ AppData \ Local \ Continuum \ anaconda 3 \ python。 exe
-DPYTHON _ LIBRARIES= C:\ Users \ jgu 23 \ AppData \ Local \ Continuum \ anaconda 3 \ libs \ python 36。解放党
-Dtensorflow _ WIN _ CPU _ SIMD _ OPTIONS=/arch:AVX
用MSBuild编译生成张量流的点安装包
丙:\.\ build 2015 msbuild/p:Configuration=Release TF _ python _ build _ pip _ package。vcx项目
编译时需要联网,git会从网上下载必要的项目包
经过漫长的编译过程(我的编译环境是i5 7440hq 12G内存)
点安装张量流管道安装包
如果编译没错误的话,进入到丙:\.\build2015\tf_python\dist目录下,可以看到一个文件
张量流-1。3 .1-cp36-cp36m-win _ amd64。万海
这个就是编译出来的张量流安装包
在进入蟒蛇提示界面
进入到丙:\.\build2017\tf_python\dist目录下,输入“皮普安装张量流-1。3 .1-cp36-cp36m-win _ amd64。whl "
到这里,张量流就已经编译安装成功了
最后验证一下
运行代码
将张量流作为法国南部(French Southern Territories的缩写)导入
hello=tf.constant(Hello,TensorFlow!)
sess=tf .会话()
print(sess.run(hello))
安慰输出
C:\ Users \ jgu \ anaconda 3 \ python。exe C:www。tygj 178。com/Users/sandman/PycharmProjects/untitled/TF _ hello world。巴拉圭
2017-10-27 13:48:20.005261:W C:\ work \张量流-1。3 .1 \张量流\核心\平台\ cpu _ feature _ guard。张量流库没有被编译为使用AVX2指令,但这些指令在您的计算机上是可用的,并且可以加速中央处理器计算。
你好,张量流!
说明这个张量流包支持钽电容指令集
注意
VS2015编译张量流最高只支持到AVX,如果CMake生成编译项目时指定中央处理器指令集支持到AVX2,编译时将出现错误c 3861:“XXX”:找不到标识符错误。要支持AVX2指令集,必须用VS2017编译
查看大图
VS2017编译过程
打开VS2017 64位命令行编译环境
在命令行环境中进入张量流的源码路径张量流-1 .3 .1 \张量流\贡献\cmake
新建一个文件夹build2017,进入build2017文件夹
用CMake生成VS2017的编译项目
丙:\.\build2017cmake.-x64-DC make _ BUILD _ TYPE=Release
-ds wig _ EXECUTABLE=C:\ work \ swig win-3。0 .12 \痛饮。可执行程序的扩展名
-DPYTHON _ EXECUTABLE= C:\ Users \ jgu 23 \ AppData \ Local \ Continuum \ anaconda 3 \ python。 exe
-DPYTHON _ LIBRARIES= C:\ Users \ jgu 23 \ AppData \ Local \ Continuum \ anaconda 3 \ libs \ python 36。解放党
-Dtensorflow _ WIN _ CPU _ SIMD _ OPTIONS=/arch:av x2
这里比VS2015的编译多了一步
用VS2017打开tf_core_kernels.vcxproj
进入属性-配置属性-www.dashuju178.comVC目录-可执行目录
将可执行目录下的$ www。沈峰157。com/(VC _可执行路径_ x64)改为$(VC_ExecutablePath_x64_x64)
保存项目,退出
用MSBuild编译生成张量流的点安装包
丙:\.\ build 2017 msbuild/p:Configuration=Release TF _ python _ build _ pip _ package。vcx项目
编译时需要联网,git会从网上下载必要的项目包
经过漫长的编译过程(我的编译环境是i5 7440hq 12G内存)
点安装张量流安装包
如果编译没错误的话,进入到丙:\.\build2017\tf_python\dist目录下,可以看到一个文件
张量流-1。3 .1-cp36-cp36m-win _ amd64。万海
这个就是张量流的安装包
在进入蟒蛇提示界面
进入到丙:\.\build2017\tf_python\dist目录下,输入“皮普安装张量流-1。3 .1-cp36-cp36m-win _ amd64。whl "
到这里,张量流就已经编译安装成功了
最后验证一下
运行代码
将张量流作为法国南部(French Southern Territories的缩写)导入
hello=tf.constant(你好,www。咏诗语乐178。com张量流!)
sess=tf .会话()
print(sess.run(hello))
安慰输出
C:\ Users \ jgu \ anaconda 3 \ python。exe C:/Users/sandman/PycharmProjects/untitled/TF _ hello world。巴拉圭
你好,张量流!
进程结束,退出代码为0
没有任何警告输出,说明这个张量流包支持AVX2指令集
常见错误及解决方法
编译re2.vcxproj时出错
警告C4819:文件包含当前代码页中无法表示的字符(936)。以统一码格式保存文件以防止数据丢失
以及
错误C2001:常量中有换行符
错误原因:此错误和编译平台的窗子操作系统的现场设为中文有关,英文的窗子没有这个错误
解决办法:修改CMakeCache.txt,让MSBuild编译这个项目时,强制按照utf-8编码文件的格式来解析文件
进入丙:\.\张量流-1。3 .1 \张量流\ contrib \ cmake \ build 2017 \ re2 \ src \ re2目录
用文本编辑器打开CMakeCache.txt,找到以下2行
在CMAKE_CXX_FLAGS_RELEASE这里添加蓝色部分,修改为
CMAKE _ CXX _ FLAGS _ RELEASE:STRING=/MD/O2/Ob2/dn debug/source-charset:utf-8
编译tf_core_kernels.vcxproj时出错
致命错误c1060:编译器堆空间不足
以及
致命错误C1002:编译器在传递2中堆空间不足
错误原因:VS编译环境默认的编译工具链为32位,张量流编译时会消耗大量的内存,导致编译器消耗的内存超出了32位编译器的寻址范围。
解决方法:
VS2015
需要运行64 位命令行编译环境,在"开始"菜单中选择运行“VS2015 x64原生工具命令提示符",如本文2.2 章中"打开VS2015 64位命令行编译环境"部分所示
或者在命令行里手工切换
首先进入VS2015的安装目录" CD C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC "
输入" vcvarsall amd64 "
参考MSDN”如何:在命令行上启用64位开发工具工具集"
https://msdn.microsoft.com/en-us/library/x4d2c09s.aspx
VS2017
可能Tensorflow项目中的CMake脚本没有很好的支持VS2017,按照VS2015的修改方法指定64位编译环境无法解决。我们需要用VS2017打开tf_core_kernels.vcxproj,手动将属性-配置属性-VC目录-可执行目录下的$(VC_ExecutablePath_x64)改为$(VC_ExecutablePath_x64_x64)
如本文第2.3章“VS2017打开tf_core_kernels.vcxproj”
结论
手动编译Tensorflow源代码支持AVX/AVX2指令,可以消除运行Tensorflow程序时恼人的警告提示,获得比官方预编译版本更快的Tensorflow学习/推理速度,节省Tensorflow开发者的时间。
转载于:https://www.cnblogs.com/qwangxiao/p/9720496.html
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。