How to Install TensorFlow1.x and 2.x GPU Supported on Windows

1. 概述

目前神经网络的编程框架仍然主要使用TensorFlow,尤其在TensorFlow2.0之后,使用TensorFlow框架编程可以像其他Python库一样直接编写。从个人使用角度讲,其优点包括但不限于:

  1. 隐化计算图构建过程,使得学习壁垒降低,对新手更加友好。
  2. TensorFlow2.0的Keras API更加好用,可以实现一行一层神经网络,几行完成整个神经网络的设计。
  3. 梯度计算更加方便,只要设计好神经网络,选定输入和输出神经元,即可自动实现后向传播算法,以计算梯度。

但是,目前主流的TensorFlow存在两个版本,并且两个版本的编程方式存在的不小的差异,为适应复现不用项目的需求,以及学习各种基于神经网络的项目,在本机系统上同时支持两个版本的TensorFlow是有必要的,本教程主要介绍如何在Windows上进行TensorFlow1.x和TensorFlow2.x的同时环境配置。

需要说明的是,TensorFlow1.x是区分CPU版本和GPU版本的,而TensorFlow2.X是不区分的,如果有GPU并配置好了环境会自动搭载GPU运行程序。同时因为TensorFlow1.x的CPU版本较为简单,因此本教程只对TensorFlow1.x和进行TensorFlow2.x的GPU版本进行配置。

2. 基础环境搭建

由于要对双版本的TensorFlow进行支持,这里推荐创建两个Python的虚拟环境(virtualenv)分别安装,并在使用时选择特定的虚拟环境下的Python执行任务。

查看本机是否安装了Python3、pip3、virtualenv。
1
2
3
python3 --version
pip3 --version
virtualenv --version

如果已经所需的环境包都已经安装,则继续安装Windows系统缺失的动态链接库环境。

包环境安装
  • 如果未安装Python3,可以到官网下载并安装,同时pip3会随同Python3一起被安装:Python 3 release for Windows
  • 如果未安装virtualenv,可以使用如下命令安装:pip3 install -U pip virtualenv
系统库环境安装

由于TensorFlow2.1.0之后需要Microsoft Visual C++关于Visual Studio 2015, 2017, and 2019的支持。对于未安装 Visual Studio 2019的用户需要另行安装此支持,以实现msvcp140_1.dll对TensorFlow2.1.0的支持。

建立虚拟环境并开启/关闭环境
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 跟新系统环境下的pip
pip install --upgrade pip

# 为TensorFlow1.x GPU创建虚拟环境
virtualenv --system-site-packages -p python3 ./venv_tf_1x_gpu
# 为TensorFlow2.x 创建虚拟环境
# virtualenv --system-site-packages -p python3 ./venv_tf_2x

# 启动虚拟环境
./venv_tf_1x_gpu/Scripts/activate

# 展示该虚拟环境下的所有Python包
pip list # show packages installed within the virtual environment

# 退出虚拟环境
deactivate # don't exit until you're done using TensorFlow

3. TensorFlow 1.x GPU支持 安装教程

环境配置要求:
1
2
3
4
scipy==1.2.1
CUDA==10.0
cudnn==7.4
tensorflow-gpu==1.15

更多版本之间的对应关系参考链接https://blog.csdn.net/qq_27825451/article/details/89082978

安装TensorFlow 1.x GPU
1
2
3
4
5
6
7
8
9
10
11
12
# 开启venv_tf_1x_gpu虚拟Python环境
./venv_tf_1x_gpu/Scripts/activate

# 将scipy版本降级到1.2.1
pip install scipy==1.2.1

# 安装TensorFlow1.5 GPU版本
pip install tensorflow-gpu==1.15 # GPU

# 测试TensorFlow是否安装成功
python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
# 此处会显示是否采用了GPU的支持,即便GPU支持未开启,此处代码也可运行。若想获得GPU支持,请继续参考如下步骤。
配置GPU环境支持
配置系统环境变量

将CUDA, CUPTI, 和 cuDNN加到系统变量%PATH%下。例如,如果CUDA Toolkit 被安装到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0 同时cuDNN被安装到 C:\tools\cuda,如下更新%PATH% 以便别的程序能找到他们:

1
2
3
4
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include;%PATH%
SET PATH=C:\tools\cuda\bin;%PATH%

4. TensorFlow 2.x GPU支持 安装教程

环境配置要求:
1
2
3
CUDA==10.1
cudnn==7.6
tensorflow-gpu==2.1.0

更多版本之间的对应关系参考链接https://blog.csdn.net/qq_27825451/article/details/89082978

安装TensorFlow 2.x GPU
1
2
3
4
5
6
7
8
9
# 开启venv_tf_2x虚拟Python环境
./venv_tf_2x/Scripts/activate

# 安装TensorFlow最新版本
pip install tensorflow # GPU

# 测试TensorFlow是否安装成功
python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
# 此处会显示是否采用了GPU的支持,即便GPU支持未开启,此处代码也可运行。若想获得GPU支持,请继续参考如下步骤。
配置GPU环境支持
配置系统环境变量

将CUDA, CUPTI, 和 cuDNN加到系统变量%PATH%下。例如,如果CUDA Toolkit 被安装到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1 同时cuDNN被安装到 C:\tools\cuda2,如下更新%PATH% 以便别的程序能找到他们:

1
2
3
4
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\CUPTI\libx64;%PATH%
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include;%PATH%
SET PATH=C:\tools\cuda2\bin;%PATH%

特别注意:两个版本的cuDNN和CUDA不要安装在同一路径,一面相互干扰。

5. 可选操作

更新所有的Python包

可以将系统环境下的大部分Python包更新到最新,以保证大部分包与包之间是兼容的

1
2
3
# pip-review方式:
pip install pip-review
pip-review --local --interactive
1
2
3
4
5
6
7
8
9
10
11
12
13
# 代码方式
# python3 pip10以上
import pip
from pip._internal.utils.misc import get_installed_distributions
from subprocess import call
for dist in get_installed_distributions():
call("pip install --upgrade " + dist.project_name, shell=True)

# pip 10以下
import pip
from subprocess import call
for dist in pip.get_installed_distributions():
call("pip install --upgrade " + dist.project_name, shell=True)

声明:本教程写于2020年3月8日,本教程内容只对该日安装过程负责。

主要参考资料:

[1] https://www.tensorflow.org/install/pip

[2] https://www.tensorflow.org/install/gpu