01 | PyTorch:网红中的顶流明星

你好,我是方远。

从这节课开始,我们正式进入PyTorch基础篇的学习。

在基础篇中,我们带你了解PyTorch的发展趋势与框架安装方法,然后重点为你讲解NumPy和 Tensor的常用知识点。

掌握这些基础知识与技巧,能够让你使用 PyTorch 框架的时候更高效,也是从头开始学习机器学习与深度学习迈出的第一步。磨刀不误砍柴工,所以通过这个模块,我们的目标是做好学习的准备工作。

今天这节课,我们先从PyTorch的安装和常用编程工具说起,先让你对PyTorch用到的语言、工具、技术做到心里有数,以便更好地开启后面的学习之旅。

PyTorch登场

为什么选择 PyTorch 框架,我在开篇词就已经说过了。从19年起,无论是学术界还是工程界 PyTorch 已经霸占了半壁江山,可以说 PyTorch 已经是现阶段的主流框架了。

这里的Py我们不陌生,它就是Python,那Torch是什么?从字面翻译过来是一个“火炬”。

图片

什么是火炬呢?其实这跟TensorFlow中的Tensor是一个意思,我们可以把它看成是能在GPU中计算的矩阵

那PyTorch框架具体是怎么用的呢?说白了就是一个计算的工具。借助它,我们就能用计算机完成复杂的计算流程。

但是我们都知道,机器跟人类的“语言”并不相通,想要让机器替我们完成对数据的复杂计算,就得先把数据翻译成机器能够理解的内容。无论是图像数据、文本数据还是数值数据,都要转换成矩阵才能进行后续的变化和运算。

搞定了读入数据这一步,我们就要靠PyTorch搞定后面各种复杂的计算功能。这些所有的计算功能,包括了从前向传播到反向传播,甚至还会涉及其它非常复杂的计算,而这些计算统统要交给 PyTorch 框架实现。

PyTorch会把我们需要计算的矩阵传入到GPU(或CPU)当中,在GPU(或CPU)中实现各种我们所需的计算功能。因为GPU做矩阵运算比较快,所以在神经网络中的计算一般都首选使用GPU,但对于学习来说,我们用CPU就可以了

而我们要做的就是,设计好整个任务的流程、整个网络架构,这样PyTorch才能顺畅地完成后面的计算流程,从而帮我们正确地计算。

安装PyTorch及其使用环境

在 PyTorch 安装之前,还有安装 Python3 以及 pip 这些最基础的操作,这些你在网上随便搜一下就能找到,相信你可以独立完成。

这里我直接从安装 PyTorch开始说,PyTorch 安装起来非常非常简单,方法也有很多,这里我们先看看最简单的方法:使用 pip 安装。

使用pip安装PyTorch

CPU版本安装:

# Linux
pip install torch==1.9.0+cpu torchvision==0.10.0+cpu torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
# Mac & Windows
pip install torch torchvision torchaudio

GPU版本安装:(默认CUDA 11.1 版本)

# Linux & Windows
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

我们只需要将上面的命令复制到计算机的命令行当中,即可实现快速安装。

这里有两个版本,一个GPU版本,一个CPU版本。建议你最好选择安装GPU版本,也就是说我们的硬件设备中最好有英伟达独立显卡。用GPU训练深度学习模型是非常快速的,所以在实际项目中都是使用GPU来训练模型。

但是如果说大家手里没有供开发使用的英伟达GPU显卡的话,那么安装CPU版本也是可以的,在学习过程中,CPU也足够让我们的小实验运行起来。

另外,安装GPU版本前,需要安装对应版本的CUDA工具包。我们可以到英伟达官网,选择相应操作系统的CUDA工具包,进行下载与安装。硬件设备中无英伟达显卡的,可以略过这部分。

目前 PyTorch 的稳定版本是 1.9.0,后续如果 PyTorch 的版本升级更新了,我们再将命令中的版本号稍作修改就可以了。

其它方法安装PyTorch

这里是PyTorch的官网,在页面如下图所示的位置,我们可以看到有一些配置选项和安装命令。

图片

我们可以根据页面上的指引,依次选择PyTorch的版本、你的操作系统、安装方式、编程语言以及计算平台,然后根据最下方的执行命令进行安装即可。

值得注意的是,Mac的操作系统只能安装CPU版本。我尝试下来最简单的方式,还是使用pip来安装。

验证是否安装成功

你在终端中输入“python”,就可以进入到Python交互模式。

首先输入如下代码,如果没有报错,就意味着PyTorch已经顺利安装了。

import torch

接下来,输入下面的代码,如果输出结果是“True”,意味着你可以使用 GPU。 这行代码的意思是检测GPU是否可用。

torch.cuda.is_available()

这里你也许会有疑问,为什么我安装的明明是 GPU 版本,但是代码却返回了“False”,显示GPU不可用呢?

对于这个问题,我们依次按照下面的步骤进行检查。

1.检查计算机上是否有支持CUDA的GPU。

首先查看电脑的显卡型号以及是否有独立显卡,如果没有以“NVIDIAN”名称开头的独立显卡,则不能支持CUDA,因此GPU不可用。

然后,你可以在这个页面查询GPU是否支持CUDA。如果你的GPU型号在页面的列表中,则表示你的计算机搭载了能够利用 CUDA 加速应用的现代 GPU,否则GPU也不可用。

若GPU支持CUDA,你还需要确保已经完成了上面介绍过的CUDA工具包的安装。

2.检查显卡驱动版本。

在终端中输入“nvidia-smi”命令,会显示出显卡驱动的版本和CUDA的版本,如下图所示。

图片

如果显卡驱动的版本过低,与CUDA版本不匹配,那么GPU也不可用,需要根据显卡的型号更新显卡驱动。

我用表格的方式,帮你梳理了CUDA版本与GPU驱动版本的对应关系,你可以根据自己计算机驱动的情况对照查看。例如,CUDA 11.1支持的 Linux驱动程序是450.80.02以上。

我们可以在这里下载并安装显卡驱动程序。

3.检查PyTorch版本和CUDA版本是否匹配?

PyTorch版本同样与CUDA版本有对应关系,我们可以在这个页面查看它们之间的对应关系。如果两者版本不匹配,可以重新安装对应版本的PyTorch,或者升级CUDA工具包。

使用Docker

通过Docker使用PyTorch也非常简单,连安装都不需要,但是前提是你需要熟悉有关Docker的知识。

如果你会熟练地使用Docker,我推荐后面这个网页链接供你参考,这里有很多的PyTorch的Docker镜像,你可以找到自己需要的镜像,然后拉取一个镜像到你的服务器或者本地,直接启动就可以了,无需额外的环境配置。

常用编程工具

在使用PyTorch进行编程之前,我们先来看看几个常用的编程工具,但是并不要求你必须使用它们,你可以根据自己的喜好自由选择。

Sublime Text

Sublime Text是一个非常轻量且强大的文本编辑工具,内置了很多快捷的功能,对于我们开发来说非常便捷。

图片

例如,它可以自动为项目中的类、方法和函数生成索引,让我们可以跟踪代码。具体就是通过它的goto anything功能,根据一些关键字,查找到项目中的对应的代码行。另外,它能支持的插件功能也很丰富。

PyCharm

PyCharm 作为一款针对 Python 的编辑器,配置简单、功能强大,使用起来省时省心,对初学者十分友好。它拥有一般 IDE 所具备的功能,比如:语法高亮、项目管理、代码跳转、代码补全、调试、单元测试、版本控制等等。

Vim

Vim是Linux系统中的文本编辑工具,非常方便快捷,并且很强大。我们在项目中经常用到它。

在我们的项目中,经常是需要登录到服务器上进行开发的,服务器一般都是Linux系统,不会有Sublime Text与PyCharm,所以,我们用Vim打开代码,直接去进行编辑就可以了。

对于没有接触过Linux,或者一直习惯使用IDE来编程开发的同学,初步接触的时候,可能觉得Vim不是很方便,但实际上,Vim包含了丰富的快捷键,对于Shell与Python的开发来说非常高效。

但是Vim的缺点正如刚才所说,你需要去学习它的使用方法,有一点点门槛,但是只要你学会了,我保证你将对它爱不释手(这里也推荐有需要的同学去看看隔壁的《Vim 实用技巧必知必会》专栏)。

Jupyter Notebook&Lab

Jupyter Notebook 是一个开源的Web应用,这也是我最想推荐给你的一个工具。它能够让你创建和分享包含可执行代码、可视化结构和文字说明的文档。

在后面的课程,如果涉及图片生成或结果展示,我们也会使用到 Jupyter Notebook,这里推荐你先安装好

简而言之,Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示。比如在编程过程中需要编写说明文档,可以在同一个页面中直接编写,便于及时说明、解释。

而 Jupyter Lab 可以看做是 Jupyter Notebook 的终极进化版,它不但包含了Jupyter Notebook所有功能,并且集成了操作终端、打开交互模式、查看csv文件及图片等功能。

图片

Jupyter Notebook在我们的深度学习领域非常活跃。在实验测试阶段,相比用py文件来直接编程,还是Jupyter Notebook方便一些。在项目结束之后如果要书写项目报告,我觉得用Jupyter也比较合适。

使用pip安装Jupyter

通过pip安装 Jupyter Notebook的命令如下。

pip install jupyter

通过pip安装Jupyter Lab的命令如下。

pip install jupyterlab

启动Jupyter

完成安装,就可以启动了。我们直接在终端中,执行下面的命令,就可以启动 Jupyter Notebook。

jupyter notebook

启动 Jupyter Lab需要在终端执行如下命令。

jupyter lab

不管在macOS系统里,还是在Windows系统,通过以上任意一种方式启动成功之后,浏览器都会自动打开Jupyter Notebook或者Jupyter Lab的开发环境(你可以回顾下“Jupyter Notebook & Lab”那个例子里的界面)。

运行Jupyter Notebook

进入到 Jupyter Notebook 的界面,我们尝试新建一个Python的Notebook。具体操作方法如下图所示。点击“New”下拉菜单,然后点击“Python 3”选项,来创建一个新的Python Notebook。

上面我们已经讲过了 PyTorch 的安装方法,我们可以执行下面这段代码,来看看 PyTorch 是否已经安装成功。

import torch
torch.__version__

点击运行按钮,我们可以看到代码执行的结果,输出了当前安装的 PyTorch 的版本,即PyTorch 1.9.0 的GPU版本。这说明 PyTorch 框架已经安装成功。

小结

恭喜你完成了这节课的学习。

今天,我们一起了解了PyTorch 框架的用途,简单来说就是能利用GPU帮我们搞定深度学习中一系列复杂运算的框架。

想要用好这个工具,我们就得设计好整个任务的流程、整个网络架构,这样PyTorch才能实现各种各样复杂的计算功能。

之后我们学习了PyTorch 框架的安装方法,我还给你推荐了一些深度学习编程的常用工具。其中我最推荐的工具就是 Jupyter Notebook,这个工具在深度学习领域里常常会用到,后面课程里涉及图片生成或者结果展示的环节,我们也会用到它

课程的准备工作就是这些,让我们一起动手,配置好环境,并选择一个你觉得顺手的开发工具,正式开始PyTorch的探索之旅吧!

千里之行,始于足下。我在下节课等你,如果你有什么问题,也可以通过留言区和我交流。

我是方远,我们下一讲见!

精选留言

  • bbbbbbbbbb

    2021-10-12 21:46:05

    请问没有显卡,可以有什么不用买显卡的解决方案吗
    作者回复

    你好,谢谢你的留言。是有可以薅羊毛的地方^^。Kaggle每周可以免费使用40个小时的GPU。
    我记得还有几个其他的平台可以免费使用GPU,你可以搜一搜“免费GPU”。

    2021-10-13 14:15:14

  • 悠闲不自得

    2021-10-12 15:04:34

    请问老师,这个没有视频吗?
    作者回复

    你好,课程是图文加音频形式的哦。

    2021-10-12 15:28:46

  • Swaggy

    2021-10-11 23:34:21

    老师可以讲一点网络训练技巧吗,比如如何应对循环神经网络梯度弥散的意思。
    作者回复

    你好,Swaggy,谢谢你的留言。本专栏重点还是PyTorch的使用与一些实战的练习,在实战篇里会穿插一些训练技巧,敬请关注。

    2021-10-12 20:37:12

  • Zeurd

    2022-03-23 17:57:21

    老师好,要是用的是A卡就没办法了只能用cpu对么
    作者回复

    你好,Zeurd。似乎是这样的。看过用AMD显卡计算的文章,但没尝试过。
    现在主流的还是NVIDIA的gpu。

    2022-03-24 17:00:50

  • Aska

    2023-03-04 17:18:59

    记录重点:Kaggle每周可以免费使用40个小时的GPU。
    羊毛达人无所不能。
  • Geek_ce0dd6

    2023-01-13 18:52:28

    老师请教几个神经网络训练模型的问题,假设我需要训练一个识别猫的模型,我准备了3000张猫的图片

    问题1:3000张猫的图片意味着有3000个猫的模型吗?这里我的想法是因为每个照片不一样所以每个照片都是一个模型都有单独的权重值

    问题2:每张猫的图片训练完它的权重值怎么保存

    问题3:假设问题1成立那么训练完成之后,输入测试照片的时候,它是如何匹配模型的呢?

    问题4:如果问题1不成立,训练的3000张照片只会存在一个模型,那么输入测试照片的时候他是会如何找到匹配的权重值得呢?

    作者回复

    你好,
    问题1: 1个模型。如果是1张一个权重的话,第3001张图片的猫该用哪个呢?
    问题2:首先是按batch训练的。每次训练都会BP更新参数。
    问题3:问题1已经回答了。
    问题4:没有匹配这一说。输入新的图片之后,模型会前向传播,在网络的最后会进行处理,输出对应类别的概率。通过概率判断模型的最终预测结果。

    2023-01-20 10:18:42

  • A🐴@伯乐

    2022-09-05 17:40:51

    按照提供的代码安装pytorch失败E:\Python310>pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
    Looking in links: https://download.pytorch.org/whl/torch_stable.html
    ERROR: Could not find a version that satisfies the requirement torch==1.9.0+cu111 (from versions: 1.11.0, 1.11.0+cpu, 1.11.0+cu113, 1.11.0+cu115, 1.12.0, 1.12.0+cpu, 1.12.0+cu113, 1.12.0+cu116, 1.12.1, 1.12.1+cpu, 1.12.1+cu113, 1.12.1+cu116)
    ERROR: No matching distribution found for torch==1.9.0+cu111
  • 🌟

    2022-09-04 11:14:39


    torch.cuda.is_available()后直接到下一行了,没反应是怎么回事呀?
    作者回复

    你好,感谢留言。
    你是怎么执行的?用脚本吗?还是控制台,用脚本不print的话不会打印

    2022-09-05 13:37:04

  • zhbr001

    2022-06-24 12:08:47

    项目的工具是什么
    作者回复

    你好,感谢你的留言。
    就我们的课程来说很多选择了,没有固定的。我比较喜欢用vim。看你喜欢哪个。

    2022-06-27 14:22:21

  • 张昊

    2022-06-17 16:50:52

    昨天看到pytorch支持Mac M1的芯片了,马上装了一个,从头来学习。
    作者回复

    👍🏻👍🏻👍🏻👍🏻

    2022-06-20 08:44:33

  • Geek_fc975d

    2022-03-29 08:58:44

    很喜欢老师的图文方式
    作者回复

    你好,感谢你的留言与认可。^^

    2022-03-29 15:38:08

  • 2021-10-23 17:37:30

    老师,你好。我在新建一个 Python 的 Notebook时,“New”下拉菜单,并没有“Python 3”选项,而是Python 3(ipykernel),点击后出现创建错误。特想请教是为什么?谢谢
    作者回复

    你好,度,感谢你的留言。Python 3(ipykernel)也是没问题的。如果使用IE浏览器的话,先换chrome试一试。还是不好用的话需要告诉我提示什么错误,命令行中会显示。

    2021-10-23 19:18:14

  • guang384

    2021-10-12 09:52:31

    期待更新
    作者回复

    感谢支持,专栏每周一、三、五更新,敬请期待!

    2021-10-12 09:55:07

  • Untitled

    2024-03-10 17:37:59

    已经不存在1.9.0版本了...
    ERROR: Could not find a version that satisfies the requirement torch==1.9.0+cpu (from versions: 2.2.0, 2.2.0+cpu, 2.2.0+cpu.cxx11.abi, 2.2.0+cu118, 2.2.0+cu121, 2.2.0+rocm5.6, 2.2.0+rocm5.7, 2.2.1, 2.2.1+cpu, 2.2.1+cpu.cxx11.abi, 2.2.1+cu118, 2.2.1+cu121, 2.2.1+rocm5.6, 2.2.1+rocm5.7)
    ERROR: No matching distribution found for torch==1.9.0+cpu
  • Ethan New

    2023-12-01 19:57:12

    第一课学习打卡,PyTorch环境已经安装成功
    作者回复

    赞,成功迈出第一步,继续加油~

    2023-12-08 10:42:48

  • ifelse

    2023-11-20 12:38:04

    学习打卡
  • 孙宏

    2023-02-23 18:56:06

    已经安装成功
  • 小林子

    2022-07-04 22:13:54

    老师你好,我想问一下cudnn有必要装吗
    作者回复

    你好,感谢你的留言。
    可以不装

    2022-07-06 09:20:43

  • Miss

    2022-06-03 14:58:30

    老师你好,我手上只有mac,一开始用mac学习,后面换成win系统可以吗?
    作者回复

    你好,感谢你的留言。用Mac学习可以的,但是一般来说项目都是在Linux上开发的,最好不用win吧。

    2022-06-06 07:58:40

  • 曾小福气

    2022-05-01 00:05:55

    请问下老师,如果直接用pip install torch==1.9.0安装的是cpu还是gpu的版本呀?还是两者都有?
    作者回复

    你好,感谢留言。是GPU版本的

    2022-05-05 10:08:07