第 4 章 使用数据 使用 PyTorch 中的数据
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在本书的前三章中, ,你使用了各种各样的数据来训练模型,从通过 API 方便捆绑的时尚 MNIST 数据集,到基于图像的 "马或人 "和 "狗与猫 "数据集,这些数据集都以 ZIP 文件的形式提供,你必须下载并预处理它们。现在,你可能已经意识到,有很多不同的方法可以获得训练模型所需的数据。
然而,在开始考虑模型架构之前,许多公共数据集要求您学习许多不同领域的特定技能。PyTorch 域和torch.utils.data.Datasets 命名空间提供的工具背后的目标是以一种易于使用的方式公开数据集,所有获取数据并将其转化为 PyTorch 友好 API 的预处理步骤都会为你完成。
在第 2 章中,你已经在 PyTorch 如何处理时尚 MNIST 的过程中看到了这种想法的一点 。回顾一下,你要做的就是获取数据:
train_dataset=datasets.FashionMNIST(root='./data',train=True,download=True,transform=transform)
在这个数据集中, ,我们还从 torchvision 库中进行了导入,以获得包含时尚 MNIST 引用的数据集对象:
fromtorchvisionimportdatasets
考虑到这是一个面向计算机视觉的数据集,它在 torchvision 库中也是合情合理的。
PyTorch 还有许多其他不同数据类型的数据集,可以用同样的方法加载。这些数据集包括
- 视图
-
时尚 MNIST 位于上述 torchvision 库中。它是 "图像分类 "内置数据集之一,但还有更多用于其他场景的数据集,如图像检测、分割、光流、立体匹配、图像配对、图像字幕、视频分类、视频预测等。
- 文本
-
普通文本数据集可在 torchtext 库中找到。这里无法一一列举,但有用于文本分类、语言建模、机器翻译、序列标记、问答和无监督学习的数据集。您可以在PyTorch 文档中找到更多详细信息。请注意,这个库并不局限于数据集;它还有许多您在处理文本时会用到的辅助函数。
音频
torchaudio 库包含 许多可用于声音或语音机器学习场景的数据集。详情请参见PyTorch 文档。
所有数据集都是torch.utils.data.Dataset, 的子类,因此, ,看看这个库并充分了解它很重要。这不仅能帮助您使用现有的数据集,还能帮助您创建自己的数据集与他人共享。
数据集入门
torch.utils.data.Dataset 是一个表示数据集的抽象类。要创建自定义数据集,只需对其进行子类化并实现这些方法即可:
__len__(self)
This 将返回数据集中的项目总数:
__getitem__(self,index)
This 将返回数据集中指定索引处的单个项目。在将该项目发送到模型之前,将对其进行转换。
下面是一个示例:
fromtorch.utils.dataimportDatasetclassCustomDataset(Dataset):def__init__(self,data,transforms=None):self.data=dataself.transforms=transformsdef__len__(self):return
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access