TensorFlow 1.0 在 Windows 上看不到 GPU(但 Theano 有)

Posted

技术标签:

【中文标题】TensorFlow 1.0 在 Windows 上看不到 GPU(但 Theano 有)【英文标题】:TensorFlow 1.0 does not see GPU on Windows (but Theano does) 【发布时间】:2017-07-17 07:36:13 【问题描述】:

我在 Windows 上运行了 Keras 和 Theano 安装(通过关注 tutorial)。现在我尝试将后端切换到Tensorflow,效果很好。

我唯一遇到的问题是 Tensorflow does not detect my 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']

没有产生任何结果,但在使用 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

也许缺少类似的东西,或者我需要add environment variables like for Theano?。在 Linux 上可能是 related question (?)。

完整的安装日志(包括一个奇怪的异常)可以在Gist 中找到。

任何想法,如何让 GPU 对 Tensorflow 可见?

【问题讨论】:

你是如何安装 tensorflow 的? 查看我的gist file,使用 pip install tensorflow 或者直接使用***的 url。 命令错误。你需要做 pip3 install --upgrade tensorflow-gpu 不,请参阅Gist。为什么要这样做?我的机器上没有安装任何 Python 2.x。 我的问题不在于使用 pip vs pip3,而在于使用 tensorflow vs tensorflow-gpu。如果两者都安装在您的计算机上,我不确定优先顺序。我认为你应该卸载 tensorflow,只安装 tensorflow-gpu。 【参考方案1】:

在同一台机器上同时安装 tensorflow 和 tensorflow-gpu 可能会导致问题。

为 1.0 版安装 tensorflow(仅适用于 cpu)或 tensorflow-gpu(仅适用于 gpu)

【讨论】:

嗯!它需要更多的谷歌搜索才能找到这个答案。他们似乎覆盖了一些pyd 文件而没有任何抱怨。为什么没有记录这个小事实?有人认为 tensorflow-gpu 是对 tensorflow 的补充,而不是替代品。 我没有很好的答案来解释他们为什么这样做,所以你现在不能同时安装两者,甚至为什么他们的文档很差。我之前尝试过关于文档(关于某些东西)的拉取请求,但几个月后我只是关闭了它,因为实际功能将在以后的版本中发生变化。

以上是关于TensorFlow 1.0 在 Windows 上看不到 GPU(但 Theano 有)的主要内容,如果未能解决你的问题,请参考以下文章

Windows上的Tensorflow - ImportError:DLL加载失败:找不到指定的模块

超详细windows10下TensorFlow2.*安装(对于intel处理器。tensorflow_cpu和tensorflow_gpu)通用

重磅 | 谷歌召开首届TensorFlow开发者大会,正式发布TensorFlow 1.0

谷歌开源机器学习框架TensorFlow 1.0

谷歌首届TensorFlow开发者峰会 重磅发布TensorFlow 1.0 | 附主题演讲视频

tensorflow2.0用1.0的代码