2017-01-23

在Windows下安装支持GPU的TensorFlow

以前TensorFlow在Windows下安装要用Docker,麻烦不说, 最关键是不支持用GPU,用GPU快非常多

如果你喜欢玩游戏的话,那么太好了,正好有显卡可以帮你加速。 但是玩游戏系统肯定是Windows啊,所以要么浪费显卡要么重启切换系统。

现在不用了,可以在Python3.5下直接Windows里安装,完美。

虽然我更喜欢Lua,速度也好写起来也好比python舒服太多, 但TensorFlow作为标杆是必须要装的。

安装CUDA

如果你没有GeForce显卡,那么可以跳过这步。

显卡兼容列表可以看这里。 什么?你告诉我你用的是农企AMD或集成显卡?所以买电脑不能图省钱嘛,你看,浪费了。

首先安装CUDA 8.0,是安装包自己下载安装

然后安装cuDNN,下载地址

安装方法是,找到你的CUDA 8.0目录,默认为 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0 把cudnn-xxxx.zip里面的cuda目录下的bin, include,lib目录直接拖到上面这个CUDA 8.0目录里。

安装Python

直接安装Anaconda的包就行,选什么Python版本都无所谓。官网

安装时建议选择ForAllUsers,否则有bug安装快完成时会跳错误。然后改变安装目录到C:\Anaconda\下,不然每次启动会需要Windows权限。

然后一条条输入命令:

#!/bin/sh
#设置专门的3.5环境
conda create --name tensorflow-gpu python=3.5
#切换环境
activate tensorflow-gpu

#获取主要的包
conda install matplotlib
conda install jupyter
conda install scipy
conda install scikit-learn
#安装tf
pip install tensorflow-gpu #如果你没有显卡,去掉-gpu即可

测试:

#ipython
In [1]:  import tensorflow as tf
...:  hello = tf.constant('Hello, TensorFlow!')
...:  sess = tf.Session()
...:  print(sess.run(hello))
...:
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cublas64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cudnn64_5.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library cufft64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library curand64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:885] Found device 0 with properties:
name: GeForce GTX 970
major: 5 minor: 2 memoryClockRate (GHz) 1.253
pciBusID 0000:01:00.0
Total memory: 4.00GiB
Free memory: 3.31GiB
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:906] DMA: 0
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:916] 0:   Y
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 970, pci bus id: 0000:01:00.0)
b'Hello, TensorFlow!'

其他

我用卷积层的时候报了如下错误:

could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED
Permission denied /proc/driver/nvidia/version

第一行看上去是cudnn没安装好;第二行是失败后尝试在windows系统下读linux的路径,无关的报错。 查了下nvidia文档,关于CUDNN_STATUS_NOT_INITIALIZED只是说设备问题,没说其他任何内容。 然后想到可能是驱动问题,重装了下驱动重启windows,解决了。


回主页