本文已于 2023 年 1 月 28 日更新,截至目前,文中所述内容仍然有效。
文章目录
准备
首先说明
- 本文不用 Anaconda,也不建议你用,太坑了!虚拟环境装了卸、卸了装,还是无法 import,谷歌了大量资料和问答也没找到解决办法;
- 安装的是 GPU 版,需要有 NVIDIA 显卡,台式机最低型号是 GTX 780,移动版最低型号是 GeForce 830M(普 G 系列)或 GTX 950M(GTX 系列)或 MX450(MX 系列),AMD 显卡不能安装;
- 如果只需要装 CPU 版也可以参考本文,忽略 CUDA 和 CUDnn 这两个词有关的步骤就好。
下载文件
需要自己手动安装 3 个东西,CPU 版只需要 Python 3.7 即可:
- Python 3.7:官方页面(3.7.9 版)
- CUDA 10.1:官方页面
- CUDnn 7.6.5 for CUDA 10.1:官方页面,点击其中的
Download cuDNN v7.6.5 (November 5th, 2019), for CUDA 10.1
(请利用浏览器的搜索功能);下载要求注册一个开发者账户
不要自行选择其他版本,CUDnn 与 CUDA 版本是配套的!如果实在想用最新版本,务必 去 官方说明 确认一下,且使用 给出的 CUDA、CUDnn 版本(版本更高更低或不匹配都不行)。
Python 3.7 的子版本,如 3.7.5、3.7.7 等,可以通用。
卸载旧版本 Python
请在“程序和功能”里完整卸载 所有 其他版本的 Python,稍后我们安装 3.7;不需要卸载 Anaconda。
这一步是针对之前在 Windows 下、以安装包的形式装过 Python 3.8 及以上,或3.4 及以下的人。TensorFlow 2.2 仅支持 3.5~3.7,由于大家喜闻乐见的 Windows 特色(PATH 变量管理混乱),即使在 VirtualEnv 下运行 pip,它也会调用 3.8 里的 pip,使得版本共存问题愈发混乱。
如果有 十足的 自信和经验能自行管理好 Windows 上的 Python 版本,可以忽略本步骤。
软件安装
安装 Python 3.7
直接安装即可,但请注意勾选“Add to PATH”(这句是说给小白听的);完全零基础的朋友可以参考 这篇文章,写的比较详细。
未测试过 不 勾选“Install for all users”的影响,稳妥起见强烈建议勾选。
安装完毕后,Win + R 运行一下命令 python
或 py
,如果弹出了写有 Python 3.7 字样的黑窗口,说明 Python 已经就绪。
安装 CUDA 10.1
CUDA 安装包内是包含显卡驱动的,CUDA 10.1 要求显卡驱动版本不低于 418.x,因此如果驱动版本不够,就需要勾选安装驱动。
- 下载好 CUDA 安装程序,有 2 个多 G,双击运行;
- 弹出下图,指定安装临时目录的位置,注意 这不是安装路径,保持默认 OK 即可;
- 解压完成后正式进入安装向导。首先按照 N 卡驱动的一贯传统,要进行 漫长而没用 的“检查系统兼容性”,我电脑上足足进行了 20 分钟,据说也有超过 1 小时的。这个阶段 耐心 等待就好,不要强行退出(即使最后无法安装也会有失败提示的);
- 然后同意用户许可;
- 安装选项要选择 “自定义”,如下图:
- 然后选择需要安装的组件,CUDA 全安装,GeForce Experience 和 PhysX 不需要安装,图形驱动程序 按自己情况勾选:安装包内带有的显卡驱动和目前电脑上已有驱动的版本号都显示在列表中,如果自己电脑上的显卡驱动高于它带有的版本,则不需要勾选安装,否则是需要安装的;
- 设置安装位置,这个保持默认就好;
- 接下来就让它自己装了。
安装 CUDnn 7.6.5 for CUDA 10.1
装好 CUDA 以后 CUDnn 就容易安装了。将下载好的 CUDnn 压缩包解压,将解压出的几个文件夹放入 CUDA 安装目录(默认为 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
)即可,如下图:
检验是否安装完成
检查自己计算机的环境变量 PATH 中是否有 CUDA 的安装路径,如果有则说明安装成功。不会查看环境变量的可以参考 这篇文章。
TensorFlow 的安装
Python 开发中有“环境”的概念,也就是说,最好给每个项目建立一个自己的虚拟环境,在虚拟环境下安装项目用到的模块,这样要比在计算机上直接安装模块更容易管理,也避免了误操作的风险。因此,每当你想要创建一个新 TensorFlow 项目时,最好是连环境一起新建,并在虚拟环境中重新安装 TensorFlow。
Anaconda 的主要功能就是便于虚拟环境的管理,但结合包括我在内 一部分人的使用体验 来看,它实际上让这个过程更麻烦了。我们使用 VirtualEnv 来创建虚拟环境、安装 TensorFlow;如果执意要用 Anaconda 来创建虚拟环境,可以参考其他文章。
Pip 换源
由于众所周知的原因,国内用 Pip 等安装模块的速度比较感人,请先参照 这篇文章 来给 Pip 换成国内镜像源,以加快 TensorFlow 的下载速度。
使用命令行创建环境
- 首先用 VirtualEnv 创建一个新的虚拟环境
venv
,这里 有详细的使用教程,廖雪峰博客的教程 也非常好; - 打开管理员权限的 cmd,激活虚拟环境,在虚拟环境下(命令行开头有
(venv)
字样)执行:pip install tensorflow-gpu~=2.2.0
- 询问是否继续时输入
y
继续安装至完成; - 执行命令
python
打开 Python 交互式窗口,输入以下代码:
返回信息:import tensorflow as tf
(时间): I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll
- 继续输入以下代码:
不用理会闪过的一系列 CUDA 初始化成功的信息,最后(或者其中某一行)显示:print(tf.constant([1.0, 2.0]))
则表示 TensorFlow 已经正确安装。tf.Tensor([1. 2.], shape=(2,), dtype=float32)
使用 PyCharm 创建环境
前面的操作如果嫌麻烦,建议用个 IDE 来辅助操作。比如用 PyCharm 就非常方便,创建虚拟环境不需要敲命令。这个的社区版是免费开源的(开发纯 Python 项目,社区版完全够用)。
JetBrains 看到了请给我广告费,谢谢。
- 从官网下载 PyCharm(注意“Community”是社区版),安装后进入 PyCharm 程序所在目录(默认为
C:\Program Files\JetBrains\PyCharm 20xx.x.x\bin
),右键点击pycharm64.exe
进入属性 → 兼容性 → 勾选“以管理员身份运行此程序”,并确定,如图: - 打开 PyCharm,点击 Create New Project 新建工程;
- 设置新项目的名称、位置,并设置新的虚拟环境(更新:“Inherit global site-packages”不需要勾选):
- 新项目会自动打开,PyCharm 会设置好虚拟环境;
- 等右下角读条结束后,点击左下角的 Terminal:
- 可以看到,此时我们已经运行在虚拟环境下了:
- 在终端上执行:
询问是否继续时输入pip install tensorflow-gpu~=2.2.0
y
继续安装至完成; - 接着执行:
这一步是手动降级 protobuf 包的版本(无需卸载已有的高版本,它将被自动卸载),这是因为 Pip 在解析依赖时为我们安装的 protobuf 版本过高,导致后续运行时可能报错“TypeError: Descriptors cannot not be created directly”(PB 和 TF 都是谷歌的产品,讽刺不?);pip install protobuf~=3.19.0
- 在左侧边栏 Project 下面的工程根目录上右键,New → Python File:
- 命名新文件为
main.py
,编辑该文件,输入如下代码:
保存文件;import tensorflow as tf a = tf.constant([1.0, 2.0]) print(a)
- 在菜单中选择 Run → Run… 进行首次运行时的快速配置,如图:
- 在弹出的框中点击“2. main”就设置好了(以后可以直接点击窗口右上角的绿色三角形来运行);
- 无视闪过的各种消息,如果出现如下结果,证明一切就绪:
- 如果看不惯一大片飚红的提示信息,可以在 main.py 文件的 最前端 加上两行:
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1'
至此,完成了 TensorFlow 的安装和配置。