win10配置tensorflow GPU版 ( VS2015 + Acconda3 + CUDA8.0 + cuDNN v5.1 )

最近准备入深度学习的坑,作为机器学习小白,决定还是从流行的Google的开源机器学习框架Tensorflow入手。Tensorflow原本只支持linux和mac OS, 但是最近Google宣布支持Windows系统。由于本人天生懒散,决定不去折腾ubuntu,一把跳进win10装Tensorflow的大坑(都是泪)。本文目的在于记录自己在win10下安装Tensorflow的历程。好了废话不多说,直接进入正题。

以下是win10配置Tensorflow所需要的工具和软件包:

  1. Rapid Environment Editor(环境变量编辑器):鉴于后面的安装过程需要修改很多环境变量,所以最好安装一下它,会方便许多。
  2. Microsoft Visual Studio 2015 Community Edition: 用于其 C/C++编译器(而不是 IDE)和 SDK,选择该确定的版本是因为它是 CUDA 8.0.61 所支持的 Windows 编译器。
  3. Anaconda3 (64-bit) + Python 3.6 (Anaconda3-4.4.0): anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,是一个优秀的集成开发环境。(python3.6也是最近才支持的)
  4. cuda_8.0.44(64bit): CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA 推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。在深度学习中我们需要GPU的并行计算能力来加速深度学习算法。
  5. cudnn_8.0(64bit): 用来进一步加速深度神经网络的计算。
  6. DXSDK_Jun10.exe: 微软的DirectX SDK工具包,不安装它的话,后面编译CUDA_Samples是没法成功的。

配置Tensorflow参考的一些文档和网站:

安装Rapid Environment Editor

下载网址:https://www.rapidee.com/en/download
安装完成后,默认界面是英文的,到设置里面改为中文。启动的时候,设置管理员启动吧,不然没法更改系统环境变量。

安装CUDA

1. 安装VS2015

下载地址:
https://www.visualstudio.com/zh-hans/vs/older-downloads/
我安装的是Microsoft Visual Studio 2015 Community Edition,不用花钱。安装过程就不赘述了,只需要装Visual C++就行。顺便说一句,Tensorflow貌似目前还不支持VS2017,读者要注意一下。

2. 安装DXSDK_Jun10.exe

下载地址:
https://pan.baidu.com/share/link?shareid=197164616&uk=369246564&fid=2918892502
安装过程很简单,无需多言。

3. 安装 CUDA

下载地址:https://developer.nvidia.com/cuda-toolkit-archive

3.1 编译示例程序

CUDA的示例程序在 C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0 文件夹下。VS2015则打开Samples_vs2015.sln,注意把解决方案配置更改为Release和x64。

编译整个解决方案,正常情况下是顺利生成成功,如下图:

示例程序生成成功

3.2 最终检查安装是否正确

在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64\Release目录下找到deviceQuery.exe文件。打开命令提示符cmd窗口,切换到到C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64\Release目录,输入:deviceQuery.exe ,然后回车。得到如下结果:

检查CUDA安装结果

只有得到如上图所示的结果才说明CUDA安装成功。

安装 Anaconda

下载地址 https://www.anaconda.com/download/,注意选择Python 3.6 version,64-Bit Graphical Installer。安装完成后即可得到集成Python3.6的科学计算环境。安装过程不复杂,唯一要注意的点是在Advanced Installation Options中要把Add Anaconda to system PATH enviroment variable选上。

安装 Tensorflow

如下图在开始菜单栏找到Anaconda Prompt:

Anaconda Prompt

打开Anaconda Prompt,输入

pip install tensorflow-gpu

回车,等待一段时间,GPU版tensorflow就下载好啦!不过别着急,要能正常使用GPU加速功能,还有cudnn需要安装。

安装cudnn

下载地址:
https://developer.nvidia.com/cudnn
这个很简单,下载后直接解压缩。加压后是cuda文件夹,里面有三个文件夹bin, include, lib。把这三个文件夹的文件复制到到安装CUDA的地方覆盖对应文件夹,默认文件夹在:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0。

安装DXSDK_Jun10.exe

下载地址:https://pan.baidu.com/share/link?shareid=197164616&uk=369246564&fid=2918892502
下载后直接安装即可。

测试tensorflow安装是否正确

打开Anaconda Prompt,输入 python打开python环境,然后输入以下代码:

import tensorflow as tf
sess = tf.Session()
a = tf.constant(10)
b = tf.constant(22)
print(sess.run(a + b))

不报错,输出结果为32,说明安装成功。
注意输入sess = tf.Session()回车后出现下图结果说明gpu版Tensorflow安装成功,正在使用GPU加速。

测试tensorflow安装是否正确

可能出现的bug及其解决方案

缺少dll文件

缺少DLL文件

import tensorflow报错,错误如图所示。

新建python文件t.py, 代码如下所示。运行该文件,根据输出结果修正错误。

import ctypes
import imp
import sys

def main():
  try:
    import tensorflow as tf
    print("TensorFlow successfully installed.")
    if tf.test.is_built_with_cuda():
      print("The installed version of TensorFlow includes GPU support.")
    else:
      print("The installed version of TensorFlow does not include GPU support.")
    sys.exit(0)
  except ImportError:
    print("ERROR: Failed to import the TensorFlow module.")

  candidate_explanation = False

  python_version = sys.version_info.major, sys.version_info.minor
  print("\n- Python version is %d.%d." % python_version)
  if not (python_version == (3, 5) or python_version == (3, 6)):
    candidate_explanation = True
    print("- The official distribution of TensorFlow for Windows requires "
          "Python version 3.5 or 3.6.")
  
  try:
    _, pathname, _ = imp.find_module("tensorflow")
    print("\n- TensorFlow is installed at: %s" % pathname)
  except ImportError:
    candidate_explanation = False
    print("""
- No module named TensorFlow is installed in this Python environment. You may
  install it using the command `pip install tensorflow`.""")

  try:
    msvcp140 = ctypes.WinDLL("msvcp140.dll")
  except OSError:
    candidate_explanation = True
    print("""
- Could not load 'msvcp140.dll'. TensorFlow requires that this DLL be
  installed in a directory that is named in your %PATH% environment
  variable. You may install this DLL by downloading Microsoft Visual
  C++ 2015 Redistributable Update 3 from this URL:
  https://www.microsoft.com/en-us/download/details.aspx?id=53587""")

  try:
    cudart64_80 = ctypes.WinDLL("cudart64_80.dll")
  except OSError:
    candidate_explanation = True
    print("""
- Could not load 'cudart64_80.dll'. The GPU version of TensorFlow
  requires that this DLL be installed in a directory that is named in
  your %PATH% environment variable. Download and install CUDA 8.0 from
  this URL: https://developer.nvidia.com/cuda-toolkit""")

  try:
    nvcuda = ctypes.WinDLL("nvcuda.dll")
  except OSError:
    candidate_explanation = True
    print("""
- Could not load 'nvcuda.dll'. The GPU version of TensorFlow requires that
  this DLL be installed in a directory that is named in your %PATH%
  environment variable. Typically it is installed in 'C:\Windows\System32'.
  If it is not present, ensure that you have a CUDA-capable GPU with the
  correct driver installed.""")

  cudnn5_found = False
  try:
    cudnn5 = ctypes.WinDLL("cudnn64_5.dll")
    cudnn5_found = True
  except OSError:
    candidate_explanation = True
    print("""
- Could not load 'cudnn64_5.dll'. The GPU version of TensorFlow
  requires that this DLL be installed in a directory that is named in
  your %PATH% environment variable. Note that installing cuDNN is a
  separate step from installing CUDA, and it is often found in a
  different directory from the CUDA DLLs. You may install the
  necessary DLL by downloading cuDNN 5.1 from this URL:
  https://developer.nvidia.com/cudnn""")

  cudnn6_found = False
  try:
    cudnn = ctypes.WinDLL("cudnn64_6.dll")
    cudnn6_found = True
  except OSError:
    candidate_explanation = True

  if not cudnn5_found or not cudnn6_found:
    print()
    if not cudnn5_found and not cudnn6_found:
      print("- Could not find cuDNN.")
    elif not cudnn5_found:
      print("- Could not find cuDNN 5.1.")
    else:
      print("- Could not find cuDNN 6.")
      print("""
  The GPU version of TensorFlow requires that the correct cuDNN DLL be installed
  in a directory that is named in your %PATH% environment variable. Note that
  installing cuDNN is a separate step from installing CUDA, and it is often
  found in a different directory from the CUDA DLLs. The correct version of
  cuDNN depends on your version of TensorFlow:
  
  * TensorFlow 1.2.1 or earlier requires cuDNN 5.1. ('cudnn64_5.dll')
  * TensorFlow 1.3 or later requires cuDNN 6. ('cudnn64_6.dll')
    
  You may install the necessary DLL by downloading cuDNN from this URL:
  https://developer.nvidia.com/cudnn""")
    
  if not candidate_explanation:
    print("""
- All required DLLs appear to be present. Please open an issue on the
  TensorFlow GitHub page: https://github.com/tensorflow/tensorflow/issues""")

  sys.exit(-1)

if __name__ == "__main__":
  main()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容