TensorFlow 1.0在Windows系统上无法识别GPU(但Theano可以)。

5

我在Windows上安装了Keras和Theano(按照这个tutorial)。现在我尝试将后端切换到Tensorflow,这非常顺利。

唯一的问题是,Tensorflow无法检测到我的GPU, 而Theano则相反:

from tensorflow.python.client import device_lib
def get_available_gpus():
    local_device_protos = device_lib.list_local_devices()
    return [x.name for x in local_device_protos if x.device_type == 'GPU']

在使用 TensorFlow 后端运行时,没有任何结果,但使用 Theano 后端运行时效果非常好。
C:\Programming\Anaconda3\python.exe D:/cnn_classify_cifar10.py 
Using Theano backend.
DEBUG: nvcc STDOUT nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
mod.cu
    Creating library C:/Users/Alex/AppData/Local/Theano/compiledir_Windows-10-10.0.14393-SP0-Intel64_Family_6_Model_60_Stepping_3_GenuineIntel-3.5.2-64/tmpgsy496fe/m91973e5c136ea49268a916ff971b7377.lib and object C:/Users/Alex/AppData/Local/Theano/compiledir_Windows-10-10.0.14393-SP0-Intel64_Family_6_Model_60_Stepping_3_GenuineIntel-3.5.2-64/tmpgsy496fe/m91973e5c136ea49268a916ff971b7377.exp

Using gpu device 0: GeForce GTX 770 (CNMeM is enabled with initial size: 80.0% of memory, cuDNN 5005)

显然缺少某些配置,但我不知道是什么。为了正确运行Theano,我需要一个名为~/.theanorc的文件,其内容如下:
[global]
device = gpu
floatX = float32

[cuda]
root = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

[nvcc]
flags=-LC:C:\Programming\WinPython-64bit-3.5.2.2\python-3.5.2.amd64\libs

也许缺少类似的东西,或者我需要像为Theano添加环境变量一样添加环境变量?可能是关于Linux的相关问题
完整的安装日志(其中包括一个奇怪的异常)可以在Gist中找到。
有什么想法,如何使GPU对Tensorflow可见?

你是如何安装TensorFlow的? - Steven
命令有误。您需要执行pip3 install --upgrade tensorflow-gpu。 - Steven
1
不行,看这个Gist。为什么呢?因为我的电脑上没有Python 2.x的安装。 - Alexander Pacha
我的问题不在于使用pip vs pip3,而是在于使用tensorflow vs tensorflow-gpu。如果两者都安装在计算机上,我不确定它们的优先顺序。我认为你应该卸载tensorflow,只安装tensorflow-gpu。 - Steven
我认为提供的答案是正确的,请接受以获得更多的关注。 - dashesy
显示剩余2条评论
1个回答

5

目前在同一台机器上安装tensorflow和tensorflow-gpu可能会出现问题。

请安装tensorflow(仅针对CPU)或tensorflow-gpu(仅针对GPU),版本为1.0。


哎呀!找到这个答案花了我更多的谷歌搜索。他们似乎会在没有任何警告的情况下覆盖一些 pyd 文件。为什么这个小事实没有被记录下来呢?人们认为 tensorflow-gpu 是 tensorflow 的补充,而不是替代品。 - dashesy
我对于为什么现在不能同时安装两个版本,甚至为什么他们的文档如此之差没有一个好的答案。我之前尝试过提交关于文档(某事)的拉取请求,但几个月后我只是关闭了它,因为实际功能将在以后的版本中更改。 - Steven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接