版本:
V2.0,2018-10-09 18:42:52
v3.0,2018.11.23
这个帖子随着我的理解不断加深,会不断对以前描述不详实之处进行修改与更新
写作动力:
为了完成吴恩达教授的Deeplearing公开课的课后作业,需要在jupyter notebook中使用tensorflow模块。作为一个刚入坑的小白,第一次接触tf并不会配置,足足花了5天的时间才踩完所有的坑弄好,其中每个模块反反复复装了接近10次。中途查阅了截止2018.02.26全网近乎所有所有的相关帖子,没有一篇帖子完整的描述这个问题(包括同论坛的一篇名叫踩坑帖的)。为了帮助后来的人不再像我这么麻烦,耽误时间,故写下这篇帖子。
解决问题:
1.在window10中为在Anaconda自带的jupyter notebook配置tensorflow
2.彻底解决配置好后jupyter notebook报错ImportError : No Moduled Name "tensorflow的问题(其实只是路径问题,不像其他帖子说的要ipython kernelspec install-self --user重新编译内核,而且重新编译后根本没有解决问题)
3.解决“解决了No Moduled Name "tensorflow的问题”之后又跳出的ImportError: cannot import name 'weakref'问题
先说说我最终配置好的环境:
个人装的是具有挑战性的GPU版本,为了充分利用显卡的并行能力。做DL的只用CPU感觉说不过去。
安装总体版本组合是:Anaconda5.1.0(Python 3.6.4) + tensorflow_gpu_1.2.1 + cuda8.0.61 + cudnn7.1.4 for CUDA8.0,我机子中没有安装python的官方发行的版本只安装了anacona。我全部选的是目前的最新版本,但是cuda千万不要选目前最新的版本,我现在最新的是9.0,也许你看到这篇帖子的时候是10.0或更高,记住往前选一个版本,最新版本可能还不支持tf,这是踩的第一个坑。
(看完本帖后的你肯定也可以在官方python发行版甚至两者并存的环境中配置好tf)
下面开始正文:
1.下载安装Anaconda:
移步至清华大学镜像源https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载Anaconda,并执行傻瓜式下一步安装。(所有用户+添加Path)但现在安装好后直接打开其中自带的jupyter notebook,是无法引入tensorflow的。
2.安装CUDA与CUDNN:
百度搜索,去NVDIA官网直接下载安装CUDA和CUDNN,先安装CUDA,安装好后再解压CUDNN的压缩包,将解压后的文件对应地拷贝到CUDA的安装目录中。(若有打不开网站或下载不下载的朋友,不要惊慌,请移步另一时间段或另一台不在同一子网的电脑多试几次)
3.安装tensorflow:
本文是专门为tensorflow创建了一个虚拟env进行安装的!
新来的小白可能还对“安装tensorflow”概念懵懂,tensorflow只是一个深度学习的框架,说白了你可以理解为是一个python的第三方库,里面提供了诸如强大的Backprop,Adam,Momentum函数,最大的好处是你可以不必亲自实现反向传播。既然作为一个python库,自然是安装在python文件夹的/Lib/site-package中。
如果你按照tf中文官网的安装方式安装不了,那是正常的,你又被墙了。还是请移步至清华大学的镜像源https://mirrors.tuna.tsinghua.edu.cn/tensorflow/windows/,这里你可以选择在线安装和将wheel文件下载下来安装,两者效果是一样的,这里我只说在线安装:
开始菜单-所有程序-Anaconda中找到Anaconda Prompt打开(所有的打开方式都不需要显示地使用管理员权限打开,有的其他帖子这么说根本没鸟用),依次执行下述命令:
conda create -n tensorflow python=3.6
activate tensorflow
python.exe -m pip install --upgrade pip #更新pip
pip install --ignore-installed --upgrade D:\tensorflow_gpu-1.2.1-cp36-cp36m-win_amd64.whl #输入你的轮子文件所在路径
然后就是等待安装自动完成,完成后,测试我们是否安装成功:
直接在Prompt中输入下面这句话:
python -c "import os; import inspect; import tensorflow; print(os.path.dirname(inspect.getfile(tensorflow)))"
来测试tf是否安装成功:成功只会显示一句安装路径。
如果你这里弹出一大片东西,诸如
1.ImportError: DLL load failed: 找不到指定的模块
2.Failed to load the native TensorFlow runtime
3.No module named '_pywrap_tensorflow_internal'
这类提示,解决的办法:
1.将CUDNN中文件cudnn64_7.dll的文件名改成cudnn64_5
2.还是不行说明你的tensorflow版本与你的cuda版本不匹配了,请回看我上方关于cuda版本的描述。
注意:若出现版本不匹配问题,需要重新安装CUDA和CUDNN时,卸载完毕后记得先重启电脑,之后检查环境变量是否也被彻底删除,以免引起之后不必要的麻烦。
4.配置路径:
如果上一步中你测试成功,开心地打开jupyter notebook,写下import tensorflow as tf,开心地发现失败了,错误提示ImportError : No Moduled Name "tensorflow。如果这个问题交由一个小白自己去解决,起码三天时间,还不一定解决。但你看到我的帖子恭喜你,你省下了将近3天的时间。
在python默认的第三方库安装路径中,(对于只安装了Anaconda的人来说是\Anaconda3\Lib\site-packages,安装官方发行版本也在类似的目录中)新建一个path.pth文件,在里面写上你tensorflow安装的位置(位置可以用pip show tensorflow查看)
D:\Anaconda3\envs\tensorflow\Lib\site-packages#写你自己的绝对路径,这里以安装Anaconda为例
5.配置路径2:
再次启动jupyter notebook测试import tf,如果成功恭喜你了,本贴结束。如果这时候只是错误变了,变为ImportError: cannot import name 'weakref',那么请在tensorflow的的安装位置中找到名为的tf_should_use.py文件,将第28行的from backports import weakref替换为import weakref
再次打开notebook测试,至此,大功告成!
主要参考帖子:(我踩坑过程中阅读的帖子远不止这些,这是其中有代表性的,其他帖子有些大同小异)
https://www.cnblogs.com/myblog1993/p/6931007.html
https://zhuanlan.zhihu.com/p/26988074
https://blog.csdn.net/qq_16568981/article/details/71750789
https://blog.csdn.net/xyh153996626/article/details/77864502
https://stackoverflow.com/questions/48593014/launching-tensorboard-error-importerror-cannot-import-name-weakref
https://blog.csdn.net/Yan_Joy/article/details/76094202