安装了tensorflow却显示无此模块_win10+vs2017+cuda10.0+python+ tensorflow r1.12 安装

前两天笔者实验室新进了俩煤气灶(技嘉 AORUS),老高兴了。

3946e710df67f97664def2045c93b3bd.png

刚升级好CUDA 10,cuDNN 7.3.1,按照以前的操作配置一下,准备装装逼做个大餐。结果 import tensorflow 之后GG

    return load_dynamic(name, filename, file)
  File "C:UserssiriuAppDataLocalProgramsPythonPython37libimp.py", line 343, in load_dynamic
    return _load(spec)
  ImportError: DLL load failed: 找不到指定的模块。

  Failed to load the native TensorFlow runtime.

顿时心有点凉凉。。。

然后在Stack Overflow查了十几个可能的错误,重新安装几遍之后,我终于放弃了。以前装r1.2,r1.6 的时候 从来没有这么费劲儿过,tensorflow的gpu 版本再也不是随便装个VC 2015依赖库,装个CUDA,装几个python外挂库,再填几个环境变量就能解决问题的了。哎……

转头开始用pytorch(真香,真**柔顺丝滑,好用!)

但是以前的代码现在都跑不了,全都移植到pytorch太痛苦了。所以移植痛不如装好tensorflow痛,本人决定好好搞搞这个问题。

隆重介绍我参考的两份资料。分别是CSDN博客,tensorflow官方文档,两份文档其实已经包含了很多信息了,但是有一些细节还不是很充分,笔者就来查缺补漏一波,来个完整版。

https://www. tensorflow.org/install/ source_windows https:// blog.csdn.net/rexran/ar ticle/details/83825623

最后笔者实现的是:Win10+VS2017+cuda10.0+cudnn7.4.2+python3.7.2+tensorflow r1.12-gpu

00de537d616f9dd8cdb1405dd86b7e72.png
tenforflow-gpu 依赖库

首先,从官方文档上看,tensorflow自 r-1.11版本以后,就再也不用cmake做构建工具了,以前轻松在 pip install tensorflow-gpu时顺带安装的cmake没了。安装原来的安装方式,import tensorflow之后很有可能就出现上述提到的错误。从tensorflow r1.11以上的版本开始,win10 环境下还需要 bazel 作为 tf 的构建工具,再不是以前 pip 一下什么 cmake 统统一起装好那么简单了。

说这么多废话,安装过程如下:

一、安装python以及部分外挂库

本人喜欢纯净的python,享受一把配置的快感,不喜欢anaconda,所以直接去以下两个网址下载纯净的python以及一些常用的外挂库(numpy+mkl,scipy,pandas,pillow,matplotlib,scikit-learn等):

Welcome to Python.org https://www. lfd.uci.edu/~gohlke/pyt honlibs/

二、安装 pycharm 或者 jupyter notebook

学生党,装个可以免费用的pycharm当IDE,有时候用用jupyter notebook,都装上

三、安装 Visual Studio 2017

下载个 Visual Studio 2017 Community 版本的(其实大多学校里可以下Professional,笔者比较嫌激活麻烦,就懒得装了),安装:

C++桌面开发 用于桌面 C++ [x86 和 x64]的 Windows 10 SDK (在单个组件中)

后面安装的CUDA10.0的例子需要C++Win10 SDK (10.0.15063.0) 版本的SDK来编译,但我两个版本的都装了,以防万一。

四、安装 MSYS2

为了安装、调用上述提到的tensorflowr1.11及以上的构建工具 Bazel,可以通过VS和MSYS2两种途径走。笔者根据参考资料,用MSYS2进行安装。

  • 首先在 https://www.msys2.org/ 网站下载最新版msys2安装包,2019.03.10为止最新版是是:http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20180531.exe
  • 全程根据默认设置安装。安装完成后运行msys2.exe,更新内核和包:(输入)pacman -Syu静静等着更新完后根据提示直接关闭窗口就好了。
  • 然后将其启动程序所在目录.usrbin添加到环境变量中(.i.e C: msys64usrbin)
  • 然后 win+R-->cmd,输入指令 > pacman -S git patch unzip 安装相关依赖包

五、安装 Bazel

新版本的tensorflow已经不再使用cmake编译,改用Bazel。可以选择用 MSYS2 下载Bazel的.exe文件。也可以自行从官网或者github上下载

  • 首先win+R-->cmd,打开命令行界面,输入 "C:msys64msys2_shell.cmd"
  • 然后进入MSYS2界面,输入以下指令:
cd /c/
mkdir bazel
cd bazel/
wget https://github.com/bazelbuild/bazel/releases/download/0.17.2/bazel-0.17.2-windows-x86_64.exe -O bazel.exe

大意就是在C盘建立 bazel文件夹,并在里面下载0.17.2版本的bazel(从tensorflow官网上看0.15.0最好,但其实0.17版本的也没啥问题)

  • 然后就是建立几个环境变量:
  1. 首先将 C:bazel 加入PATH
  2. 然后在系统变量里面建立以下几个变量:
BAZEL_SH,值为MSYS2 bash.exe的路径,如 C: msys64usrbinbash.exe;
BAZEL_VS,值为VS2017的路径,如 C:Program Files (x86)Microsoft Visual Studio2017Community;
BAZEL_VC,值为VC编译工具的路径,如 C:Program Files (x86)Microsoft Visual Studio2017 CommunityVC

六、安装Nvidia驱动

这个很简单了,直接官网一波下下来默认安装就好(不能没有驱动,否则tensorflow会警告,pytorch运行不了),

七、安装CUDA 和 cuDNN

笔者安装的是CUDA 10.0 和cuDNN 7.4.2下载好了默认安装,然后把cuDNN依赖包放在CUDA安装路径里面(这个是老生常谈了)。安装完了之后,重点是检查以下系统变量里面是否有:

CUDA_PATH= C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.0
CUDA_PATH_V10_0= C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.0

同时,还需要再添加以下三个变量到PATH里面(后面两个好像安装的时候会自动写进去)

C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.0extrasCUPTIlibx64
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.0bin
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.0libnvvp

到此为止可以检测有没有装好 驱动CUDA,任何一个没有装好,tensorflow和pytorch的cuda版本都会报错。可以通过 win+R-->cmd 中运行

> "C:Program FilesNVIDIA CorporationNVSMInvidia-smi.exe"(有引号)

或者打开文件夹 C:Program FilesNVIDIA CorporationNVSMI, 直接把 nvidia-smi.exe 拖入cmd界面中即可。如果装好了,就会显示你GPU和驱动的具体信息:

811009b8fbe618a28188b48109e0d422.png
  • 最上一行是驱动版本和CUDA版本,
  • 第二/三行从左到右依次表示:
  • GPU编号/GPU风扇运行情况(上下),名称/GPU温度(上下),性能状态(RTX-P8),实际运行功率/额定功率(14W/260W),总线ID/是否外接显示器(上)/使用内存和总内存(下)GPU使用率,ECC的东西,计算模式

八、安装tensorflow

根据官网的推荐(不是直接用pip)需要手动配置tensorflow(手动配置其实要快一些,pip安装时候,网稍有不稳定就崩了)

首先win+R-->cmd,依次输入

> git clone https://github.com/tensorflow/tensorflow.git
> cd tensorflow
> git checkout r1.12
> python ./configure.py

大意是使用 Git 克隆 TensorFlow 代码库(git在安装MSYS2时候就装好了),然后转到tensorflow根目录下,选定要构建的tensorflow版本,比如我的是r1.12,之后在根目录下开始配置tensorflow

之后就进入配置界面:

  • 首先会问你依赖哪个python库,然后给你个default,一般直接回车就好了;
  • 其次问你python外挂放在哪个文件夹,也有default 一般直接回车就好了
  • 容易出错的点在于----问你需要把tensorflow用于支撑什么样的GPU运算平台,可选的有SYCL,ROCM,CUDA。如果你是要选CUDA的话,其他几个都选N,否则在选完了最后就会报错:
Traceback (most recent call last):
File "./configure.py", line 1693, in <module>
main()
File "./configure.py", line 1655, in main
raise UserInputError('SYCL / CUDA / ROCm are mututally exclusive. '
__main__.UserInputError: SYCL / CUDA / ROCm are mututally exclusive. At most 1 GPU platform can be configured.

(这个错误充分的告诉我们,做人不能太贪心,要选只能选一样) 对应的源代码如下:

"if environ_cp.get('TF_NEED_OPENCL_SYCL') == '1':
gpu_platform_count += 1
if environ_cp.get('TF_NEED_ROCM') == '1':
gpu_platform_count += 1
if environ_cp.get('TF_NEED_CUDA') == '1':
gpu_platform_count += 1
if gpu_platform_count >= 2:
raise UserInputError('SYCL / CUDA / ROCm are mututally exclusive. '
'At most 1 GPU platform can be configured.')"

之后没几步就差不多配置完了,然后我打开IDE,import tensorflow,运行以前的一个程序:

661c1f1f9a3dc7991fecad0d01968c35.png
2019-03-11 14:12:50.314016: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1512] Adding visible gpu devices: 0
2019-03-11 14:12:50.732208: I tensorflow/core/common_runtime/gpu/gpu_device.cc:984] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-03-11 14:12:50.732337: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990]      0 
2019-03-11 14:12:50.732410: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1003] 0:   N 
2019-03-11 14:12:50.732607: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 8697 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:01:00.0, compute capability: 7.5)

真的激动。。。泪目啊!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值