TensorFlow前,最好安装目录这个顺序来操作,即安装
Anaconda,创建虚拟环境,安装
CUDA,安装
cuDNN,安装
TensorFlow,五步走。本文教程主要适合用
gpu跑深度学习的同学,用
cpu跑深度学习的同学可移步至其他文章。
首先,什么是TensorFlow?TensorFlow是一种深度学习框架,这个框架里有很多已经写好的模块(包)可以让用户来调用,实现不同的操作。或者说,TensorFlow是一个工具。
TensorFlow有不同的版本,不同版本的TensorFlow对编译器(即Python的版本)和驱动要求不一样。
先搞清楚一个事情,你是用
CPU跑深度学习还是GPU跑深度学习。
如果你用cpu跑深度学习,只需要考虑Python版本。
如果你用gpu跑深度学习,则需要考虑Python版本、CUDA版本、cuDNN版本。
(这里简单提一嘴,CUDA是显卡厂商NVIDIA推出的运算平台,cuDNN是NVIDIA的一个用于深度神经网络的GPU加速库。反正就是如果你要用NVIDIA显卡跑深度学习的话,需要下载CUDA和cuDNN驱动)
目前,TensorFlow的cpu版本除了1.0.0和1.1.0要求python的版本是3.5,其他版本从1.2.0一直到2.6.0,都能兼容python3.6。所以我们一般python使用3.6这个最经典兼容性最好的版本,具体的tensorflow==x.x.x各版本对Python的要求,大家可以自行去TensorFlow中文官网查看。TensorFlow中文官网:https://tensorflow.google.cn/install/source_windows?hl=zh-cn
tensorflow-gpu==2.x.x各版本对于cuDNN和CUDA的要求
| 版本 | Python 版本 | 编译器 | 构建工具 | cuDNN | CUDA |
|---|---|---|---|---|---|
| tensorflow_gpu-2.6.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 | 8.1 | 11.2 |
| tensorflow_gpu-2.5.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 | 8.1 | 11.2 |
| tensorflow_gpu-2.4.0 | 3.6-3.8 | MSVC 2019 | Bazel 3.1.0 | 8.0 | 11.0 |
| tensorflow_gpu-2.3.0 | 3.5-3.8 | MSVC 2019 | Bazel 3.1.0 | 7.6 | 10.1 |
| tensorflow_gpu-2.2.0 | 3.5-3.8 | MSVC 2019 | Bazel 2.0.0 | 7.6 | 10.1 |
| tensorflow_gpu-2.1.0 | 3.5-3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 | 7.6 | 10.1 |
| tensorflow_gpu-2.0.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow-gpu==1.x.x各版本对于cuDNN和CUDA的要求
| 版本 | Python 版本 | 编译器 | 构建工具 | cuDNN | CUDA |
|---|---|---|---|---|---|
| tensorflow_gpu-1.15.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
| tensorflow_gpu-1.14.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.24.1-0.25.2 | 7.4 | 10 |
| tensorflow_gpu-1.13.0 | 3.5-3.7 | MSVC 2019 | Bazel 0.19.0-0.21.0 | 7.4 | 10 |
| tensorflow_gpu-1.12.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 | 7.2 | 9.0 |
| tensorflow_gpu-1.11.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 | 7 | 9 |
| tensorflow_gpu-1.10.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.9.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.8.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.7.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.6.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.5.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.4.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
| tensorflow_gpu-1.3.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
| tensorflow_gpu-1.2.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
| tensorflow_gpu-1.1.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
| tensorflow_gpu-1.0.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
不是说安装TensorFlow吗?Anaconda是个什么东西?官方给的解释是Anaconda是一个开源的Python发行版本。我们不管它是个啥,我们要用的是它里面的一个工具叫Conda,Conda是一个辅助进行包管理和环境管理的工具,我们需要用它来创建Conda虚拟环境。
这里先说一个事情。首先,不同的深度学习项目对于深度学习环境的要求不同。我们在搞深度学习研究的时候,肯定不能所有的项目都只用一个深度学习环境。就好比你不能在厕所吃饭,不能在卧室撒尿一样。
我们需要创建几个虚拟环境,就像建几个房子或场所一样,便于我们在不同的地点,做不同的深度学习项目。
—————————————————————————————————
先来理解一下什么是虚拟环境?
我举个例子,假如说你现在有三个深度学习项目,分别是吃饭、睡觉、学习。你吃饭要去食堂,睡觉要在宿舍,学习要去图书馆。其中食堂、宿舍和图书馆就可以理解为三个虚拟环境。
食堂里的食物、餐具等;宿舍里的床、被子等;图书馆里的桌子、书等;这些都是虚拟环境中的模块(库或包,像python、tensorflow)。
对于不同的深度学习项目,我们要给他配合适的虚拟环境,让它在这个环境中运行代码。
我们说的**tensorflow版本不匹配,报错**就好比我的深度学习项目是吃饭,你给我配了一个图书馆的环境,里面是桌子和书,我肯定执行不了。
举了一个不是特别恰当的例子来帮助大家理解虚拟环境,希望有助于大家理解创建虚拟环境的重要性。
如下表所示,是三个虚拟环境以及它们里面的部分具体包的展示。
| 虚拟环境名字 | 包 |
|---|---|
| tf2.6 | python3.9、tensorflow-gpu2.6.0等 |
| tf2.0 | python3.6、tensorflow-gpu2.0.0、pip21.2.4等 |
| tf1.1 | python3.7、tensorflow1.1.15等 |
—————————————————————————————————
建议大家从清华大学开源软件站下载Anaconda。
清华大学开源软件站:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

32位操作系统下载Anaconda3-20xx.xx-Windows-x86.exe
64位操作系统下载Anaconda3-20xx.xx-Windows-x86_64.exe
注意,有人反馈用最新的Anaconda创建虚拟环境和安装包时,可能会报奇怪的错误。建议大家在下载的时候不要下载最新的Anaconda,下载稍微旧一点的。
在命令提示符中输入control system,弹出设置界面。

依次单击高级系统设置-环境变量-Path-编辑。

然后单击新建-浏览,将下面四个路径添加到环境变量。
D:\Software\Anaconda3
D:\Software\Anaconda3\Scripts\
D:\Software\Anaconda3\Library\bin
D:\Software\Anaconda3\Library\mingw-w64\bin
这里注意一下
Anaconda3的路径,每个人安装Anaconda3的路径可能不同,添加你自己Anaconda3的路径,别无脑复制!

指定Conda库的安装源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
查看Conda库的安装源
conda config --show channels

修改pip库的安装源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
查看pip库的安装源
pip config list

虚拟环境的操作都在命令提示符中执行。
在安装Tensorflow之前,我们先来搞清楚如何创建一个虚拟环境。
创建虚拟环境
conda create -n 环境名 python=X.X


激活虚拟环境
activate 环境名

盘符C:前面的(Mytensorflow2.0)表示我们当前已经进入这个虚拟环境中。
退出虚拟环境
conda deactivate

删除虚拟环境
conda remove -n 环境名 --all
安装指定包
conda install -n 环境名 包名
删除指定包
conda remove --name 环境名 包名
CUDA:NVIDIA的运算平台。
由于CUDA的不同版本对显卡驱动的版本是有要求的,所以我们需要先了解显卡驱动信息以及不同版本的CUDA对显卡驱动的最低要求。
打开NVIDIA 控制面板,单击帮助-系统信息


CUDA版本对显卡驱动的最低要求:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html,不满足要求的先去更新显卡驱动。
NVIDIA 驱动程序下载:https://www.nvidia.cn/Download/index.aspx?lang=cn

下载CUDA的时候,注意安装类型选exe(local)。

下载完成后,打开下载的CUDA,选择解压路径。

单击同意并继续。

选中自定义,单击下一步。

只勾选CUDA即可,单击下一步,之后的步骤都是单击下一步,直至完成安装。

将下面的两个路径添加到环境变量中的系统变量的Path中,具体添加方法参照本文1.3部分的内容,此处不再赘述。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\libnvvp
在命令提示符中执行如下命令即可看到CUDA的版本。
nvcc --version

至此,CUDA安装完毕。
下载并解压cuDNN,得到如下图的三个文件夹和一个.txt文件。

将所有的文件复制到CUDA的安装目录下,我这里的路径是:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
供大家参考,直接粘贴到这个v10.0的文件夹就行。

进入如下目录,找到cudnn.h文件并打开。(如果找不到cudnn.h文件,可以找cudnn_version.h)
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include

如图所示,我所安装的cuDNN版本是7.4.1。

至此,cuDNN安装完毕。
完成了以上的所有工作后,安装TensorFlow就似乎很容易了。
具体操作可参考第2部分的内容,此处不再赘述。接下来我用自己前面创建好的虚拟环境Mytensorflow2.0来演示。
CPU版本的tensorflow
pip install tensorflow==x.x.x -i https://pypi.tuna.tsinghua.edu.cn/simple
GPU版本的tensorflow
pip install tensorflow-gpu==x.x.x -i https://pypi.tuna.tsinghua.edu.cn/simple
注意,这里
-i https://pypi.tuna.tsinghua.edu.cn/simple的意思是:指定库的安装源,即指定从清华大学开源软件镜像站下载tensorflow。因为从tensorflow官网(www.tensorflow.org)下载速度很慢,这里不再作过多的赘述。如果你在本文1.4中已经修改过库的安装源,则无需再指定库的安装源-i https://pypi.tuna.tsinghua.edu.cn/simple。
首先,进入虚拟环境Mytensorflow2.0。

我目前这台机器的CUDA是10.0,cuDNN是7.4.1,这个虚拟环境的Python是3.6,通过版本匹配,我知道能下载的tensorflow的版本是1.13.0、1.14.0、1.15.0和2.0.0。

执行下述安装命令,等待安装。
pip install tensorflow-gpu==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

进入python,当左边显示>>>这个符号是,表示我们已经运行了python编译器。然后,我们用两行代码查看TensorFlow版本:
import tensorflow
print(tensorflow.__version__)

至此,TensorFlow安装完毕。
由于本文写作较为仓促,用了两三天时间系统整理了一下搭建TensorFlow深度学习环境的过程。如有错误之处,欢迎大家批评指正。也欢迎各位同仁在评论区提出意见,多多交流,感谢各位!