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
有人可以帮忙吗?谢谢!
答案 0 :(得分:24)
TL; DR:要将cuDNN与TensorFlow一起使用,文件cudnn64_5.dll
必须位于%PATH%
环境变量中的目录中。请注意,cuDNN是从CUDA单独下载的,您必须下载cuDNN的5.1版。
首先,请注意,cuDNN不与CUDA工具包的其余部分一起分发,因此您需要从the NVIDIA website单独下载。在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
答案 1 :(得分:2)
在function Remove-NetScalerWhiteListItem
{
[CmdletBinding()]
Param
(
)
DynamicParam
{
$ParameterName = "ServiceGroup"
$AttributeCollection = New-Object System.Collections.ObjectModel.Collection[System.Attribute]
$ParameterAttribute = New-Object System.Management.Automation.ParameterAttribute
$ParameterAttribute.Mandatory = $true
$ParameterAttribute.Position = 0
$ParameterAttribute.DontShow = $false
$serviceGroups = Get-NetScalerWhiteList
$ValidateSetAtrribute = New-Object System.Management.Automation.ValidateSetAttribute($serviceGroups)
$AttributeCollection.Add($ValidateSetAtrribute)
$AttributeCollection.Add($ParameterAttribute)
$RunTimeParameter = New-Object System.Management.Automation.RuntimeDefinedParameter($ParameterName, [string], $AttributeCollection)
$RuntimeParameterDictionary = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary
$RuntimeParameterDictionary.Add($ParameterName, $RunTimeParameter)
$RuntimeParameterDictionary
}
Begin
{
$ServiceGroup = $PSBoundParameters[$ParameterName]
}
Process
{
Copy-Item "$masterIgnoreFilePath\ingnore.txt" "$masterIgnoreFilePath\ingnore.bak"
$serviceGroups = Get-NetScalerWhiteList
$serviceGroups.Remove($serviceGroup)
Write-Host $serviceGroups
}
}
之后尝试了pip3 install --upgrade tensorflow
,但效果很好。
我认为只有在直接尝试tensorflow-gpu
时才会出现问题。
答案 2 :(得分:1)
除上述答案外,请确保您已下载支持的cuDNN版本。 目前TensorFlow支持旧的cuDNN v.5.1,而Nvidia网站上有更新的cuDNN 6.0。我有6.0这样的错误。当我回到5.1时,一切正常。
答案 3 :(得分:1)
我遇到了这个问题,我花了好几次尝试解决它。 这个答案适用于Windows 64上的Python 64 我还安装了使用Python 3.6的VS2017
从干净的Windows 64计算机 安装Visual Studio 2015(注意:不是vs2017 - 至少还没有)。社区版是免费的。确保安装C ++编译器。你需要这个来编译未来的python库。
这也将清除msvcp140.dll或msvcrt * .dll的任何问题。或者你可以安装VC Redistributable(但我建议安装VS2015,因为这将允许你编译和安装未来的python库)。
接下来,安装VS2017,这次也选择Python和Data Learning(scikit)。这将默认使用Python 3.6安装Anaconda(使用VS2015构建)。还有一些有用的功能
*同时确保您拥有兼容的Nvidia卡(请参阅前面的答案)
然后确保您的计算机上安装了最新的Nvidia驱动程序。
然后确保您已经安装了Google和其他人提到的Nvidia库,包括Cuda垃圾箱。
*从tensorflow 1.2开始,支持Python 3.6,因此不再需要有关创建Python 3.5环境的说明
我遇到了一些与tensorflow 1.2相关的问题。我也在我的环境中尝试过tensorflow 1.31rc2
这将阻止通过“pip install”进行安装 要解决此问题,请添加 - trusted-host pypi.python.org
例如
pip install tensorflow-gpu --trusted-host pypi.python.org
安装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,请确保使用pup install的--upgrade选项强制升级)
要测试您是否拥有正确的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
然后进入c:\ tfexperiment
从此位置运行python.exe。 Windows现在将首先在当前路径中查找dll
现在一旦python加载
导入tensorflow为tf
它应该适合你(希望如此)。这是我能够让它在我的机器上工作的唯一方法。如果你做到这一点,你可以简单地添加c:\ tfexperiment作为路径环境变量中的第一个路径。或者你可以找出正确的路径顺序。
如果STILL无效,您可以通过从Microsoft下载procmon.exe来更进一步。运行procmon.exe。过滤可执行文件python.exe(抱歉,我没有时间解释如何使用procmon)。现在回到你的python提示符并再次输入“import tensorflow as tf”。 procmon应该有很多信息。您可能希望过滤loadimage。这将告诉你它正在加载什么dll。请注意,.pyd扩展名也是DLL。加载(或加载失败)的最后一个.dll可能是导致问题的那个。
答案 4 :(得分:0)
您必须下载系统的cudnn,然后在 CUDA_PATH 中提取它。
我的 CUDA_PATH 是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
答案 5 :(得分: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
答案 6 :(得分:0)
同时确保没有其他...\CUDA\v8.0\bin
(错误的版本)坐在另一条路径中。
因此,如果您过去将DLL放在...\CuDNN\v5.1\bin
中,请记住您没有将新版本放入foo:
@perl -e 'die()' > $@ || { echo "removing $@ because exit code was $${?}"; rm $@; }
,而不从其他目录中删除旧版本。
答案 7 :(得分:0)
我刚从这个网站下载了cuda.dll文件:https://developer.nvidia.com/cudnn
然后将解压缩的文件夹移动到我的其他anaconda库所在的位置。
我使用pycharm,因此很容易看到所有外部库存储在anaconda中的位置。希望这有帮助!
答案 8 :(得分:0)
在我的测试中,我发现TF 1.2支持cudnn 64_5,而TF 1.3支持cudnn 64_6。希望这会有所帮助。 :)
答案 9 :(得分:0)
您也可以将cuda64_5.dll放在C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v9.0 \ bin目录中,它可以正常工作。
您可以使用文件夹GUI并将.dll加载到目录中。然后,每次使用Tensorflow时都不需要定义PATH。
答案 10 :(得分: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: (以下代码的顺序非常重要。在导入TensorFlow之前添加CUDA_path 。)
import os
os.environ["PATH"] += ";D:/CUDA/v8.0/bin;"
import tensorflow as tf
或者您可以将CUDA_path 临时添加到CMD中:
set PATH=%PATH%;"D:/CUDA/v8.0/bin"
python3 tensorflow_model.py
它可以在我的笔记本电脑上运行(Windows10,Python3.6,Tensorflow-gpu == 1.5)。 我认为这两种方法都是简单的解决方案。
答案 11 :(得分:0)
Dan Bricklin花了我很多时间。
我终于以相同的步骤但有序地实现了它。
从我的conda环境中删除了以前的张量流。
为Windows 8安装了 CUDA v9.1 (使用VisualStudio的默认版本进行标准安装),并添加了“ C:\ Program Files \ NVIDIA GPU计算工具包\ CUDA \ v9.1“ 到路径。
下载并提取了 cudnn-9.1-windows-7-x64 ,并将其移至“程序文件”中 并将其添加到路径“ C:\ Program Files \ cuda \ bin” 。