我的AI之路(4)--在Anaconda3 下安装Tensorflow 1.8
在Anaconda3安装好后,有一个默认的base(root)环境,你可以打开Anaconda Navigator后点左边列表中的Environments可以看到,或者在command窗口中输入conda activate或者activate,这时**的默认环境就是base。
这个base(root) env实际上是融合于Anaconda本身的环境,也就是说如果在base环境里安装tensorflow或其他软件包的话,都会安装在Anaconda本身的包库路径下,比如C:\Anaconda3\Lib\site-packages\,这么做有一个好处就是安装tensorflow过程非常快,因为C:\Anaconda3\Lib\site-packages\下面已经安装了大量支持包,无需再下载安装,除非版本不对,坏处就是把Anaconda本身的环境搞乱了。
如果想创建一个自己的独立的隔离环境,那么可以用conda创建一个新的,比如执行:
conda create -n tensorflow pip python=3.6
然后回车确认,Anaconda就会给你在C:\Anaconda3\envs\下创建一个独立的tensorflow目录,并把python3.6和相关支持包都安装到C:\Anaconda3\envs\tensorflow下。然后执行
conda activate tensorflow 或 activate tensorflow
**进入这个新创建的tensorflow env,然后就可以开始安装tensorflow了:
先把依赖包安装了(这些依赖包有些tensorflow 1.8 不会自动去下载安装,但是会以红字提示,为了一次性安装好无问题,最好先把依赖包先安装了):
python -m pip install html5lib bleach ipykernel
python -m pip install --ignore-installed --upgrade pip setuptools
安装完上面的包后,安装tensorflow1.8,一般书上或网上说的去https://storage.googleapis.com/tensorflow/去下载跟你的操作系统和python版本对应的wheel文件安装,或者执行 git clone https://github.com/tensorflow/tensorflow下载源码然后在本地执行configure和bazel命令编译出wheel文件再安装,前者的缺点是你需要指定跟你的操作系统和python版本对应的准确的wheel文件名,而且https://storage.googleapis.com/国内下载文件比较慢,后者是下载文件不仅很慢很难一次性成功下载到全部源码文件,而且build出wheel的过程中可能会出现未知的你一下不清楚如何解决的问题,除非你的环境很特殊确实需要根据环境build出wheel文件,或者你有大把时间想弄着玩玩熟悉一下tensorflow的build过程,那么你可以一边自个去好好玩。
其实国内清华提供了一个镜像网站https://pypi.tuna.tsinghua.edu.cn,上面有很多开源项目的好东东,包括tensorflow,下载文件速度很快,而且能根据你的操作系统和python版本给你自动选择对应的wheel文件下载安装,很省事,执行:
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow
或
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu
即可快速安装tensorflow CPU或GPU版(当前清华镜像网站上的Tensorflow版本已经是1.10.1版),安装完后,执行python进入python命令行,然后写几行简单代码测试一下:
import tensorflow as tf
c=tf.constant("A.C., you have done a good job")
s=tf.Session()
s.run(c)
如果无错误能打印出"A.C., you have done a good job",这表明安装成功了。
对于CPU版tensorflow,如果安装完后在执行import tensorflow as tf这句时报错:ImportError: DLL load failed: 找不到指定的模块,或者直接提示:
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
这是因为你的C:\Windows\System32\下缺少一个msvcp140.dll文件,需要安装VC++ 2015 redistribute,到https://www.microsoft.com/en-us/download/details.aspx?id=53587下载跟你Windows位数对应的vc_redist.x64.exe或vc_redist.x86.exe文件并安装即可解决。
如果你的电脑有NVidia GPU卡,想安装GPU版tensorflow,则执行
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu
安装完后,还不能立即像上面那样执行测试代码,还需要安装CUDA和CUDNN等支持NVidia GPU卡作并行计算的运行库环境,否则会在import tensorflow时报错,给出大意是找不到cuda库之类的提示。安装了跟tensorflow1.8相对应的正确版本的CUDA和CUDNN后在执行测试代码无代码错误的话即可看到打印输出。
关于如何选择和正确安装跟tensorflow版本对应的CUDA和CUDNN版本,这点很重要,CUDA和CUDNN安装弄错了会让你抓狂,tensorflow会出这样那样的莫名错误,不知道具体原因几下解决不了的,会让你郁闷到深夜,这话题需要单独写一篇文章才能说完,请参见我的下一篇文章。
另外,https://github.com/tensorflow/tensorflow/上有说明,还提供了Tensorflow nightly build的这种下载安装方式,这种安装方式很简单,只需执行
pip install tf-nightly 或 pip install tf-nightly-gpu
我试过,这种安装方式能自动根据你的机器的操作系统和python版本,自动选择对应的最新的nightly版本下载安装,这种安装方式好处是简单,缺点是下载慢,网速不快的整个过程需要等不少时间,另外nightly build可能有不稳定的一面。
此外,Anaconda Navigator提供了图形化界面安装tensorflow或其他包的功能。
点击下方+号可以创建一个新的隔离环境,注意选择Python的版本(如果需要的话,还可以选择R语言的版本):
打开Terminal:
然后在Terminal里设置清华的镜像网站作为源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
或者手工在<home>/.condarc文件(Windows里是在C:\Users\<username>\下面)里手工添加:
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults
ssl_verify: true
show_channel_urls: true
然后在分类栏选择All,在Search Packages栏输入tensorflow,然后在显示出来的列表中勾选tensorflow或tensorflow-gpu,然后点击右下方的Apply按钮:
在弹出窗口中点击Apply即开始安装
可以看到,cudatookit和cudnn以及vc2005_runtime等支持库都会自动安装,但是这窗口里的显示的各个软件的版本都非常老了,tensorflow还是1.1版,说明镜像库这个路径下很久没有提供更新了,所以不推荐这种安装方式,需要找到提供比较新的版本的镜像源,目前我没找到,以后找到再回头修改上面的源设置。
安装完tensorflow后,从http://yann.lecun.com/exdb/mnist把四个测试/验证数据集文件下载到D:\AI\dataset\mnist,然后顺便使用tensorflow提供的mnist example代码跑一下训练和试用体验一下tensorboard,执行以下命令:
cd D:\Anaconda3\Lib\site-packages\tensorflow\examples\tutorials\mnist
#对于Windows环境下,一定要指定 log_dir 和data_dir参数,因为如果不指定路径,这些代码默认都是试图去创建以linux的/tmp为路径开始的log和data目录,那样会出错导致停止,因为Windows下根本没有/tmp
python mnist_with_summaries.py --log_dir=.\log --data_dir=d:\AI\dataset\mnist
执行上面的命令开始训练后,如果报错:
F T:\src\github\tensorflow\tensorflow\stream_executor\lib\statusor.cc:34] Attempting to fetch value instead of handling error Failed precondition: could not dlopen DSO: cupti64_90.dll; dlerror: cupti64_90.dll not found
这是因为cupti64_90.dll在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\extras\CUPTI\libx64下,但这个目录路径没有加入到path环境变量中,在系统环境变量设置里把这个C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\extras\CUPTI\libx64加入到path变量中即可。
训练完后,执行:
tensorboard --logdir=.\log
可以看到如下输出:
D:\Anaconda3\Lib\site-packages\tensorflow\examples\tutorials\mnist>tensorboard --logdir=.\log
d:\anaconda3\lib\site-packages\h5py\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
TensorBoard 1.10.0 at http://fychen-T470P:6006 (Press CTRL+C to quit)
在Chrome浏览器里输入地址http://fychen-T470P:6006即可打开tensorboard页面。
Windows下跑word2vec example:
cd D:\Anaconda3\Lib\site-packages\tensorflow\examples\tutorials\word2vec
修改word2vec_basic.py (因为代码默认使用linux的/tmp路径,Windows下必须修改):
def maybe_download(filename, expected_bytes):
"""Download a file if not present, and make sure it's the right size."""
#local_filename = os.path.join(gettempdir(), filename)
local_filename = "D:\\AI\\dataset\\text8\\" + filename
然后执行:
python word2vec_basic.py --log_dir=.\log
训练完毕后,在.\log\下再创建log文件夹,然后把训练生成的metadata.tsv文件移到这个log目录里去(这是Tensorboard的bug,不然找不着这个文件!),然后执行:
tensorboard --logdir=.\log
输出:
D:\Anaconda3\Lib\site-packages\tensorflow\examples\tutorials\word2vec>tensorboard --logdir=.\log
d:\anaconda3\lib\site-packages\h5py\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
TensorBoard 1.10.0 at http://fychen-T470P:6006 (Press CTRL+C to quit)
在chrome浏览器里输入地址http://fychen-T470P:6006,进入页面点projector面板即可看到很炫酷的三维效果展示(分PCA和T-SNE方法,还可以custom):
点击上方的A按钮,可以把立体三维点云图切换成text显示模式:
我的AI之路(4)--在Anaconda3 下安装Tensorflow 1.8
我的AI之路(5)--如何选择和正确安装跟Tensorflow版本对应的CUDA和cuDNN版本
我的AI之路(6)--在Anaconda3 下安装PyTorch
我的AI之路(7)--安装OpenCV3_Python 3.4.1 + Contrib以及PyCharm
我的AI之路(8)--体验用OpenCV 3的ANN进行手写数字识别及解决遇到的问题
我的AI之路(10)--如何在Linux下安装CUDA和CUDNN
我的AI之路(11)--如何解决在Linux下编译OpenCV3时出现的多个错误
我的AI之路(12)--如何配置Caffe使用GPU计算并解决编译中出现的若干错误
我的AI之路(13)--解决编译gcc/g++源码过程中出现的错误
我的AI之路(14)--Caffe example:使用MNIST数据集训练和测试LeNet-5模型
我的AI之路(15)--Linux下编译OpenCV3的最新版OpenCV3.4.1及错误解决
我的AI之路(16)--云服务器上安装和调试基于Tensorflow 1.10.1的训练环境
我的AI之路(17)--Tensorflow和Caffe的API及Guide
我的AI之路(18)--Tensorflow的模型安装之object_detection
我的AI之路(19)--如何在Windows下安装pycocotools PythonAPI
我的AI之路(20)--用Tensorflow object_detection跑raccoon数据集
我的AI之路(21)--用Tensorflow object_detection跑PASCAL VOC 2012数据集
我的AI之路(22)--使用Object_Detection_Tensorflow_API
我的AI之路(23)--在Windows下编译Bazel和使用Bazel编译tensorflow