17

TensorFlow 刚刚发布了 windows 支持。我安装了 gpu 版本和 CUDA 8.0 和 python 3.5。但是,在我导入 tensorflow 后,出现以下错误:

>>> import tensorflow
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:119] Couldn't open CUDA library cudnn64_5.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:3459] Unable to load cuDNN DSO
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

有人可以帮忙吗?谢谢!

4

12 回答 12

26

TL;DR:要将 cuDNN 与 TensorFlow 结合使用,该文件cudnn64_5.dll必须位于%PATH%环境变量中的目录中。请注意,cuDNN 是从 CUDA 单独下载的,您必须下载 cuDNN 5.1 版。

首先,请注意 cuDNN 不与 CUDA 工具包的其余部分一起分发,因此您需要从NVIDIA 网站单独下载。在 Windows 上,它以 ZIP 存档的形式分发,因此您必须将其解压缩并找到包含cudnn64_5.dll. 例如,如果您将其解压缩到C:\tools\cuda,则 DLL 将位于C:\tools\cuda\bin\cudnn64_5.dll. 最后,您可以通过在命令提示符处键入以下内容将其添加到您的路径中:

C:\> set PATH=%PATH%;C:\tools\cuda\bin
C:\> python
...
>>> import tensorflow as tf
于 2016-12-07T00:24:31.930 回答
4

pip3 install --upgrade tensorflow之后试了tensorflow-gpu一下,效果很好。

我认为只有在pip3 install --upgrade tensorflow-gpu直接尝试时才会出现问题。

于 2017-12-05T17:57:03.703 回答
1

我遇到了这个问题,我花了几次尝试来解决它。这个答案适用于 Windows 64 上的 Python 64 我还安装了 VS2017 和 Python 3.6

从干净的 Windows 64 机器 安装 Visual Studio 2015(注意:不是 vs2017——至少现在还没有)。社区版是免费的。确保安装 C++ 编译器。您将需要它来编译未来的 python 库。

这也将清除 msvcp140.dll 或 msvcrt*.dlls 的任何问题。或者,您可以安装 VC Redistributable(但我建议安装 VS2015,因为这将允许您编译和安装未来的 python 库)。

接下来,安装 VS2017,这次还要选择 Python 和数据学习(scikit)。这将默认使用 Python 3.6(使用 VS2015 构建)安装 Anaconda。还有一些有用的功能

*还要确保您有兼容的 Nvidia 卡(请参阅以前的答案)

然后确保您的计算机上安装了最新的 Nvidia 驱动程序。

然后确保你已经安装了谷歌和其他人提到的 Nvidia 库,包括 Cuda bins。

*从 tensorflow 1.2 开始,支持 Python 3.6,因此不再需要创建 Python 3.5 环境的说明

我在使用 tensorflow 1.2 时遇到了一些问题。我还在我的环境中尝试了 tensorflow 1.31rc2

问题#1——防火墙(对于那些在防火墙后面的人)

这将阻止通过“pip install”进行安装要解决此问题,请添加--trusted-host pypi.python.org

例如

pip install tensorflow-gpu --trusted-host pypi.python.org

问题 #2——升级到 numpy 1.13.1

安装 tensorflow 将升级到不兼容的 numpy 1.13.1 版本(至少在我的 windows 机器上)。要解决此问题,请在http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy下载轮子, 查找numpy-1.13.1+mkl-cp36-cp36m-win_amd64.whl

在安装 tensorflow之前安装这个轮子。这将阻止 tensorflow 安装不兼容版本的 numpy 1.13.1 包

注意:查看如何在其他帖子中安装轮子(pip install fullpath_of_wheel)

注意:如果您已经安装了 tensorflow,请确保使用 pip install 的 --upgrade 选项强制升级)

问题 #3——Nvidia cuda 包在不同的位置

要测试您是否拥有正确的 CU*.DLL 包,请使用“where”命令(来自 C:\ 命令提示符)

cublas64_80.dll 在哪里

cudnn64_5.dll 在哪里

cufft64_80.dll 在哪里

nvcuda.dll 在哪里

curand64_80.dll 在哪里

cusolver64_80.dll 在哪里

如果你的机器和我的一样,你会在多个位置找到这些 dll,有时它们甚至不存在。例如,在我的 c:\system32\windows 的 c:\program files\Anaconda3 目录 nvcuda.dll 中找到了 cublas64_80.dll,依此类推。如果您安装了 matlab,它将有自己的版本。CNTK 也有自己的版本。Nvidia 会将它们放在另一个目录中。这又是一个问题。正如其他人所提到的,您需要的一些 DLL 由 Nvidia 以 zip 文件的形式提供。

我建议不要尝试修复您的路径,而是先尝试此方法

把上面提到的6个dll收集起来放在一个目录下如c:\tfexperiment

然后 cd 进入 c:\tfexperiment

从这个位置运行 python.exe。Windows 现在将首先在当前路径中查找 dll

现在一旦python加载输入

将张量流导入为 tf

它应该对你有用(希望如此)。这是我能够让它在我的机器上工作的唯一方法。如果您走到这一步,您可以简单地将 c:\tfexperiment 添加为路径环境变量中的第一个路径。或者您可以找出正确的路径顺序。

如果它仍然不起作用,您可以通过从 Microsoft 下载 procmon.exe 来更进一步。运行 procmon.exe。过滤可执行的 python.exe(对不起,我没有时间解释如何使用 procmon)。现在回到你的 python 提示符并再次输入“import tensorflow as tf”。procmon 应该有很多行信息。您可能想要过滤 loadimage。这将告诉您它正在加载哪些 dll。请注意,.pyd 扩展名也是 DLL。最后一个加载(或加载失败)的 .dll 可能是导致问题的那个。

于 2017-08-08T22:47:11.083 回答
1

除了上述答案之外,请确保您已下载受支持的 cuDNN 版本。目前 TensorFlow 支持较旧的 cuDNN v.5.1,而 Nvidia 网站上提供了较新的 cuDNN 6.0。我在 6.0 中遇到了这样的错误。当我回滚到 5.1 时,一切正常。

于 2017-04-05T23:19:15.593 回答
0

至于丹·布里克林,我花了很多时间。
我终于按照相同的步骤实现了它,但按顺序排列。

  1. 从我的 conda 环境中删除了以前的 tensorflow。

  2. 安装了适用于 Windows 8 的CUDA v9.1(使用默认版本的 VisualStudio 进行标准安装)并将“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1”添加到路径中。

  3. 下载并解压cudnn-9.1-windows-7-x64,将其移至“程序文件”并将其添加到路径“C:\Program Files\cuda\bin”

  4. 在我的 conda 环境"pip install --ignore-installed --upgrade tensorflow"中使用 pip 安装了 tensorflow 。
于 2018-07-10T03:22:45.070 回答
0

我刚刚从这个网站下载了 cuda.dll 文件:https ://developer.nvidia.com/cudnn

然后将解压缩的文件夹移动到我其余的 anaconda 库所在的位置。

我使用 pycharm,因此很容易看到所有外部库在 anaconda 中的存储位置。希望这可以帮助!

于 2017-11-29T05:23:29.173 回答
0

您必须下载系统的cudnn,并将其解压缩到CUDA_PATH中。

我的CUDA_PATHC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

于 2017-03-04T11:54:51.117 回答
0

在我的测试中,我发现TF 1.2支持cudnn 64_5,TF 1.3支持cudnn 64_6。希望这会有所帮助。:)

于 2018-01-15T03:37:33.850 回答
0

您也可以将 cuda64_5.dll 放在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin 目录中,它可以正常工作。

您可以使用文件夹 GUI 并将 .dll 加载到目录中。然后你不需要每次使用 Tensorflow 时都定义 PATH。

于 2018-02-13T15:55:07.220 回答
0

您可以通过这种方式检查您的环境变量:

import os
print("Environmental variable:", os.environ["PATH"])
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;

我的 CUDA_path 是“D:/CUDA/v8.0/bin”,我在这里找不到我的 CUDA_path。您会在这里找到您丢失的文件(例如“cublas64_80.dll”、“cudnn64_5.dll”等)。前提是您已经完成了 CUDA 安装。

如果您在环境变量中找不到您的 CUDA_path,您可以手动添加您的 CUDA_path:(以下代码的顺序非常重要。在 import TensorFlow 之前添加 CUDA_path。)

import os
os.environ["PATH"] += ";D:/CUDA/v8.0/bin;" 
import tensorflow as tf

或者您可以暂时在 CMD 中添加您的 CUDA_path :

set PATH=%PATH%;"D:/CUDA/v8.0/bin"
python3 tensorflow_model.py

它适用于我的笔记本电脑(Windows10、Python3.6、Tensorflow-gpu==1.5)。我认为这两种方法都是简单的解决方案。

于 2018-07-10T02:05:44.417 回答
0

对于那些因为以下原因来到这里的人:

I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library cublas64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_blas.cc:2294] Unable to load cuBLAS DSO.
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:119] Couldn't open CUDA library cufft64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_fft.cc:344] Unable to load cuFFT DSO.
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:119] Couldn't open CUDA library curand64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_rng.cc:338] Unable to load cuRAND DSO.

您需要添加 CUDA 常规路径。我不知道他们为什么不把它们放在一起下载。很傻。

C:\Users\user>set PATH=%PATH%;C:\tools\cuda\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
于 2017-05-24T21:41:13.897 回答
0

还要确保没有其他cudnn64_5.dll(错误版本的)位于另一条路径中。

因此,如果您将 DLL 放在过去,请记住,您在没有从另一个目录中删除旧版本的情况下将...\CUDA\v8.0\bin新版本放入其中,并且不要放入其中。...\CuDNN\v5.1\bin

于 2017-06-02T08:34:13.180 回答