深度学习环境搭建:tensorflow安装教程及常见错误解决

区别于其他入门教程的“手把手式”,本文更强调“因”而非“果”。我之所以加上“通用”字样,是因为在你了解了这个开发环境之后,那些很low的错误你就不会犯了。

大家都知道深度学习涉及到大量的模型、算法,看着那些乱糟糟的公式符号,心中一定是“WTF”。我想说的是,这些你都不要管,所谓车到山前必有路。

# 所需安装包 #

通常以我的习惯是以最简单的方式来接触一门新的技术,并且尽量抛弃新的(边缘)技术的介入,如果因为一些其他因素来导致学习树的不断扩大,会变得很低效,所以我们直击核心。以最常用的windows环境为例。

这里以**windows7+TensorFlow-gpu1.5+cuda8+cudnn6+anaconda5+python3.6**为例。这里强烈推荐GPU版本,因为深度学习动辄几小时、几天、几周的运行市场,GPU加速会节省你很多时间(甚至电费)。

1. cuda_8.0.61_windows.exe [http://developer2.download.nvidia.com/compute/cuda/8.0/secure/Prod2/local_installers/cuda_8.0.61_windows.exe](http://developer2.download.nvidia.com/compute/cuda/8.0/secure/Prod2/local_installers/cuda_8.0.61_windows.exe):

从NIVDIA官网下载需要找到历史版本**Legacy Releases**。

tensorflow代码引用的cuda库必须**绝对匹配**,比如tensorflow1.3-1.5都使用cuda8的库,目前(2017-10-24 20:40:53)不支持cuda9库。

这里有一个关于cuda8的补丁,修复了8.0的一些bug[http://developer2.download.nvidia.com/compute/cuda/8.0/secure/Prod2/patches/2/cuda_8.0.61.2_windows.exe](http://developer2.download.nvidia.com/compute/cuda/8.0/secure/Prod2/patches/2/cuda_8.0.61.2_windows.exe)

2. cudnn-8.0-windows7-x64-v6.0.zip [http://developer2.download.nvidia.com/compute/machine-learning/cudnn/secure/v6/prod/8.0_20170427/cudnn-8.0-windows7-x64-v6.0.zip](http://developer2.download.nvidia.com/compute/machine-learning/cudnn/secure/v6/prod/8.0_20170427/cudnn-8.0-windows7-x64-v6.0.zip):

和上面的原因一样,请匹配6.0版本。

3. tensorflow [https://github.com/tensorflow/tensorflow](https://github.com/tensorflow/tensorflow):

我之所以给出github的地址是因为tensorflow团队在github上每天12:34都有一次build,并且github不受“种种”网络因素的影响。在tensorflow找到python3.6对应gpu版本[build history](http://ci.tensorflow.org/view/tf-nightly/job/tf-nightly-windows/M=windows-gpu,PY=36/),找到whl文件地址。

4. Anaconda3-5.0.0-Windows-x86_64.exe [https://www.anaconda.com/download/](https://www.anaconda.com/download/):

anaconda有一个最大的好处就是安装各种python库比较方便。

# 安装包关系 #

anaconda相当于tensorflow运行的容器。anaconda可以创建多个“盒子”(environment),每个盒子中的环境互不干扰,所以使用anaconda可以同时安装python3.5/3.6,tensorflow1.3/1.5。

cuda和cudnn是tensorflow调用gpu所需要的库。也就是说tensorflow必须通过cuda和cudnn来调用电脑的gpu。

#安装#

### 安装anaconda、anaconda、cuda、cudnn ###

1. anaconda、cuda、cudnn安装即可。在安装过程中会自动配置环境变量。

2. 不过需要手动将cuda的development目录配置到`CUDA_HOME`中。

3. 将cudnn解压后,把文件复制到cuda对应目录。

### 安装tensorflow ###

1. 启动anaconda,点击**environments**(环境),点击**create**(新建),命名`tensorflow-gpu`,选取`3.6`版本。

2. 点击tensorflow-gpu启动**Open Terminal**,输入`activate tensorflow-gpu`。这时,anaconda下**名字叫做tensorflow-gpu的环境**已经启动了。下面我们才真正开始安装tensorflow。

3. 输入

`pip install --ignore-installed --upgradehttp://ci.tensorflow.org/view/tf-nightly/job/tf-nightly-windows/M=windows-gpu,PY=36/lastSuccessfulBuild/artifact/cmake_build/tf_python/dist/tf_nightly_gpu-1.5.0.dev20171024-cp36-cp36m-win_amd64.whl`

稍等片刻tensorflow就安装成功了。

# 测试tensorflow环境 #

1. 点击anaconda下我们创建的环境`tensorflow-gpu`启动**Open With Python**

2. 输入`import tensorflow`如果不报错就说明安装成功了。

# 常见错误 #

1. ImportError: DLL load failed: 找不到指定的模块。

这个错误通常是cuda或者cudnn与tensorflow的版本对应错误。推荐下载cuda8+cudnn6。

当然,随着时间推移这些版本会被淘汰,但本教程依然适用。在github上找到tensorflow项目,在项目内搜索`TF_CUDA_VERSION`和`TF_CUDNN_VERSION`会看到当前tensorflow对应的是哪个cuda和cudnn版本。

2. 其他错误。

# 运行mnist例子 #

1. mnist例子运行需要安装matplotlib库,这时候anaconda的方便之处就得以体现了。点击anaconda下`tensorflow-gpu`环境,再右侧搜索matplotlib,勾选并点击apply即可。

2. 下载github上mnist教程例子[https://github.com/martin-gorner/tensorflow-mnist-tutorial](https://github.com/martin-gorner/tensorflow-mnist-tutorial),并解压。

3. 启动anaconda下`tensorflow-gpu`环境**Open Terminal**,输入`activate tensorflow-gpu`,cd到步骤2解压目录。

4. 执行`python mnist_xx.py`

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏架构之路

高并发请求的缓存设计策略

前几天,我司出了个篓子。当时正值某喜闻乐见的关键比赛结束,一堆人打开我司app准备看点东西,结果从来没有感受到过这么多关注量的该功能瞬间幸福到眩晕,触发了熔断,...

17720
来自专栏程序员八阿哥

年薪20万Python工程师进阶(7):Python资源大全,让你相见恨晚的Python库

用来访问第三方 API的库。 参见: List of Python API Wrappers and Libraries。

46120
来自专栏iKcamp

iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 解析JSON

视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影。 前面的文章中,...

42090
来自专栏北京马哥教育

性能调优攻略

关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈...

42340
来自专栏腾讯技术工程官方号的专栏

高并发性能调试经验分享(上)

4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?遗憾的是知乎很...

1.1K30
来自专栏云瓣

用 Node.js 把玩一番 Alfred Workflow

作为 Mac 上常年位居神器榜第一位的软件来说,Alfred 给我们带来的便利是不言而喻的,其中 workflow(工作流) 功不可没,在它上面可以轻松地查找任...

46530
来自专栏电光石火

idea 创建的maven+spring+mybatis项目整合 报错无法创建bean

最近在做一个由maven构建的spring+spring mvc+mybatis项目,刚开始的时候是用自己的电脑Win10环境下的eclipse写的,托管到了码...

36460
来自专栏SDNLAB

话说VLAN Tag 的“来龙去脉”

前言 自从上篇文章《三层交换机的工作原理》发布后,有很多的网络爱好者私底下与我取得了联系,针对当前的TCP/IP网络做了很多的探讨,从这些爱好者身上我也学习到了...

478110
来自专栏编程札记

Goroutine并发调度模型深入之实现一个协程池

1K50
来自专栏web编程技术分享

简单粗暴,详细得不要不要的 JavaWeb快速入门

40390

扫码关注云+社区

领取腾讯云代金券