第 2 章 用 PyTorch 进行图像分类 用 PyTorch 进行图像分类
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在你设置好 PyTorch 之后,深度学习教科书通常会在做任何有趣的事情之前向你抛出一堆专业术语。我尽量少用这些术语,而是通过一个例子来说明,尽管这个例子很容易随着你对 PyTorch 的使用越来越熟练而扩展。我们在本书中一直使用这个例子来演示如何调试模型(第 7 章)或将其部署到生产中(第 8 章)。
从现在开始到第 4 章结束,我们要构建的是一个图像分类器。神经网络通常用作图像分类器;给网络一张图片,然后问它一个对我们来说很简单的问题:"这是什么?"
让我们开始构建我们的 PyTorch 应用程序。
传统挑战
你会如何编写一个能区分鱼和猫的程序呢?也许你会编写一套规则,描述猫有尾巴或鱼有鳞片,然后将这些规则应用到图像中,以确定你正在看的是什么。但这需要时间、精力和技巧。另外,如果你遇到了像曼克斯猫这样的动物,虽然它很明显是一只猫,但却没有尾巴,那该怎么办呢?
你可以看到,为了描述所有可能发生的情况,这些规则会变得越来越复杂。另外,我得承认,我在图形编程方面非常糟糕,所以一想到要手动编写所有这些规则,我就感到害怕。
我们需要的是一个函数,在输入图像的情况下,返回猫或鱼。我们很难通过详尽罗列所有条件来构建这个函数。但 Deep Learning 本质上是让计算机来完成我们刚才谈到的构建所有这些规则的艰苦工作--只要我们创建一个结构,给网络提供大量数据,并让它有办法找出是否得到了正确的答案。这就是我们要做的。一路上,你将学习到如何使用 PyTorch 的一些关键概念。
但首先是数据
首先,我们需要数据。需要多少数据?这要看情况。要想让任何 Deep Learning 技术发挥作用,你都需要大量数据来训练神经网络,这种想法并不一定正确,你将在第 4 章中看到这一点。不过,现在我们要从头开始训练,这通常确实需要获取大量数据。我们需要大量的鱼和猫的图片。
现在,我们可以花一些时间从谷歌图片搜索之类的地方下载许多图片,但在这种情况下,我们有一个捷径:一个用于训练神经网络的标准图片集,名为 ImageNet。它包含 1400 多万张图像和 20000 个图像类别。它是所有图像分类器自我评判的标准。因此,我从这里获取图像,当然,如果你喜欢,也可以自行下载其他图像。
除了数据,PyTorch 还需要一种方法来确定什么是猫,什么是鱼。这对我们来说很容易,但对计算机来说就有点难了(这也是我们首先要构建程序的原因!)。我们使用标签来连接数据,这种训练方式被称为 ...