前言
第一次安装TF就折腾了好久,如今一年过后,换了电脑,再次安装TF,以前成功安装的使用那个教程网址还保存有,以为会容易些,没想到一折腾就是整整两天……差点放弃,打开万能的淘宝准备寻求人工帮助,没想到报价为110¥……于是一咬牙,第三天终于安装好了。(:з」∠)
虽然整体思路很明白,先安装下Anaconda,相关包就都有了,然后pip一下tensorflow_gpu,接着安装CUDA和cudnn就完事了,可是期间还是有大大小小的坑,最后发现就是一句话——都是版本惹得祸。(教程参见https://blog.csdn.net/u010099080/article/details/53418159)
以下把踩过的坑一一记录,作为留念。
坑0 windows版本
这对现在的我来说已经不算是坑了,但是下载安装包是必须要对应起自己的系统的。比如我的是64位win10,其中安装包中如果是x86的就不行,因为这代表是32位的。包括一些第三包库,除了要适用python版本外,还要对应windows版本,比如有一个叫做Enchant的库就是死活安装不了,最后发现win平台上只有32位版本的,所以就没戏了。(而Linux和macOS上却都有)
坑1 Python版本
Anaconda安装会默认安装最新的python3.7,但是最新的tensorflow-gpu-1.12才兼容到python3.6,于是找呀找呀找方法,找到了Anaconda的历史版本下载安装了。(历史版本参见https://repo.continuum.io/archive/) (后来发现其实conda install python=3.6
就可以了)
坑2 pip版本
终于有了合适的python版本,pip安装时又报错了,因为pip版本必须是最新的。于是我python -m pip install --upgrade pip
。(当时升级时候卡那里了,于是关掉控制台,然后发现原来版本的pip也被删除了……于是又重装了Anaconda。(:з」∠))
坑3 GPU版本
安装CUDA之前,要先看电脑上的GPU版本,然后去NVIDIA官网找对应的版本CUDA。(到这里查https://developer.nvidia.com/cuda-gpus)这次选笔记本电脑还专门找2GB独显的笔记本,选了一个入门级显卡中较好的GeForce MX150,甚至还是所谓“满血版”的,就是为了安个GPU版本的TF跑程序,结果官网上支持CUDA的显卡列表中,竟然!!没有!!MX150!!!(:з」∠))但我还是没有放弃,毕竟也算有名的MX150怎么可能不支持CUDA……于是我打开了万能的知乎,发现有一个问题就在讨论(见此https://www.zhihu.com/question/264793150) 好在还是有人安装成功的…….
坑4 MX150版本
万没想到同样是MX150的GPU还会不一样,有人说装CUDA9.0,有人说9.1,有人说9.2…..于是还专门查看了自己机器显卡上的NVCUDA.DLL文件,显示是CUDA9.1.xx于是便去下载CUDA9.1……
坑5 CUDA下载
从官网上下载CUDA,本身就是1.5个G,下载速度竟然十几kb,中间一段就要重新下载。所以从官网下载基本不可能实现了,于是我进入了万能的CSDN,上面的资源帖有各个版本的CUDA的云盘资源,但是都需要积分。幸亏我几年前心血来潮冲了一点钱换积分,现在看来台值了,这几年下了好多源码,软件和书籍还剩余不少积分,不然又是一个坑。(并且CSDN作为程序员社区,官网的bug真多,唯一的搜索栏到现在还是坏的……不过幸好有百度)
坑6 CUDA版本
下载了CUDA9.1以后发现竟然不兼容……于是,最新的10.0还没有对应TF,于是把9.0与9.1也下载了一遍,发现兼容的只有9.2,总算是把CUDA安装好了。(经验就是一个一个试_(:з」∠)_)
坑7 cudnn版本
这个东西是最让我省心的一次安装了。只需要解压一下,加一下系统变量就好了。为了保险起见,又按其他教程吧里面的dll文件一个个复制到CUDA文件夹中,并且加了好多Path,也不知道起作用了没有,最后到还是相安无事。不然只能再一个版本一个版本的试了_(:з」∠)_。
坑8 TensorFlow版本
终于只剩下TF的安装了,只需要轻轻的pip一下,就完成最后一步了。没想到迎来的确实确实最大的一个坑…….(:з」∠)
pip install tensorflow_gpu
最新的安装版本1.12安装成功。再次对照官网,确认此版本对应python3.6~3.5,CUDA9,cudnn7,核对完毕,万无一失。import tensorflow
(CUDA的版本对应https://tensorflow.google.cn/install/source_windows)
结果两个ImportError: DLL load failed: 找不到指定的模块。
(:з」∠)。
我还能怎么办……(:з」∠)
中间找了好久,卸载重装Anconda,弄着弄那还是不行,一度想要花钱找人安装……(:з」∠)
最后抱着试一试的心态,又安装了TF1.11,还是两个ImportError。.(:з」∠)
有安装1.10,终于错误提示信息不一样了!一个[WinError 126]
,一个要求安装CUDA9.0。1.9与1.8也是如此。
但是没有卵用,是我的显卡只兼容CUDA9.2,网上有人说目前TF只支持9.0……于是真的无解了.(:з」∠)
最后终于发现github上有非官方但是兼容CUDA9.2的TF的whl,于是准备最后一搏,竟然成功了,import后终于没有任何反应,顿时老泪纵横……\(T▽T)/
坑9 路漫漫兮…
其实安装时候还是十几行红红的错误提示,还是没有完美安装成功,不过总算试了一些基本程序TF是可以用了,这个坑就先埋下作为伏笔吧,以后出了问题再说吧…..\(T▽T)/
其他坑
期间安装TF官方的安装方法试过,后来放弃了,因为太复杂;也用过conda的方法,据说能一下子把所有依赖都安装好,但是安装失败了;最后发现还是这种方法最靠谱……今天用TF运行的RNN模型一直出错,让我一度以为是TF没有安装好,还好最后发现是源码有点老(两年了),里面TF几个函数更新了,做了修改后运行成功了,,,但最后还是没有训练成功,因为GPU资源耗尽了_(:з」∠)…….虽然新笔记本电脑GPU比以前的要好很多,不过容量都是2GB,想在笔记本电脑上做深度学习还是不太行呀。有招一日一定要买台好电脑,或者租个好的服务器来训练模型,并且一定要去转到Linux系统上去,windows还是坑太多了(:з」∠)_(等到读了研吧)