互联网技术 / 互联网资讯 · 2024年3月9日 0

PyTorch的Torchvision和Torchtext数据集

对于PyTorch加载和处理不同类型数据,官方提供了Torchvision和Torchtext。

之前使用 TorchDataloadeR类直接加载图像并将其转换为张量。现在结合Torchvision和Torchtext介绍Torch中的内置数据集

Torchvision 中的数据集 MNIST

MNIST是一个由标准化和中心裁剪的手写图像组成的数据集。它有超过 60,000 张训练图像和 10,000 张测试图像。这是用于学习和实验目的最常用的数据集之一。要加载和使用数据集,使用以下语法导入:Torchvision.datasets.MNIST()。

FAsHion MNIST

FAsHion MNIST数据集类似于MNIST,但该数据集包含T恤、裤子、包包等服装项目,而不是手写数字,训练和测试样本数分别为60,000和10,000。要加载和使用数据集,使用以下语法导入:Torchvision.datasets.FAsHionMNIST()

CIFAR

CIFAR数据集有两个版本,CIFAR10和CIFAR100。CIFAR10 由 10 个不同标签的图像组成,而 CIFAR100 有 100 个不同的类。这些包括常见的图像,如卡车、青蛙、船、汽车、鹿等。

COCO

COCO数据集包含超过 100,000 个日常对象,如人、瓶子、文具、书籍等。这个图像数据集广泛用于对象检测和图像字幕应用。下面是可以加载 COCO 的位置:Torchvision.datasets.CocoCaptions()

EMNIST

EMNIST数据集是 MNIST 数据集的高级版本。它由包括数字和字母的图像组成。如果您正在处理基于从图像中识别文本的问题,EMNIST是一个不错的选择。下面是可以加载 EMNIST的位置::Torchvision.datasets.EMNIST()

image-NET

imageNet 是用于训练高端神经网络的旗舰数据集之一。它由分布在 10,000 个类别中的超过 120 万张图像组成。通常,这个数据集加载在高端硬件系统上,因为单独的 CPU 无法处理这么大的数据集。下面是加载 imageNet 数据集的类:Torchvision.datasets.imageNet()

Torchtext 中的数据集 IMDB

IMDB是一个用于情感分类的数据集,其中包含一组 25,000 条高度极端的电影评论用于训练,另外 25,000 条用于测试。使用以下类加载这些数据Torchtext:Torchtext.datasets.IMDB()

WikIText2

WikIText2语言建模数据集是一个超过 1 亿个标记的集合。它是从维基百科中提取的,并保留了标点符号和实际的字母大小写。它广泛用于涉及长期依赖的应用程序。可以从Torchtext以下位置加载此数据:Torchtext.datasets.WikIText2()

深入查看 MNIST 数据集

MNIST 是最受欢迎的数据集之一。现在我们将看到 PyTorch 如何从 pyTorch/vision 存储库加载 MNIST 数据集。让我们首先下载数据集并将其加载到名为 的变量中data_tRAIn

fRoM Torchvision.datasets iMpoRt MNIST  # Download MNIST  data_tRAIn = MNIST(””~/Mnist_data””, tRAIn=TRue, download=TRue)  iMpoRt Matplotlib.pyplot as plt  Random_image = data_tRAIn[0][0] Random_image_label = data_tRAIn[0][1]  # PRint the image USing Matplotlib plt.iMshow(Random_image) pRint(“The label of the image is:”, Random_image_label)  DataloadeR加载MNIST

下面我们使用DataloadeR该类加载数据集,如下所示。

iMpoRt Torch fRoM Torchvision iMpoRt tRansfoRMs  data_tRAIn = Torch.utils.data.DataloadeR(     MNIST(           ””~/Mnist_data””, tRAIn=TRue, download=TRue,            tRansfoRM = tRansfoRMs.CoMpose([               tRansfoRMs.ToTensoR()           ])),           BATch_size=64,           shuFFle=TRue           )  foR BATch_idx, saMples in enuMeRate(data_tRAIn):       pRint(BATch_idx, saMples)  CUDA加载

我们可以启用 GPU 来更快地训练我们的模型。现在让我们使用CUDA加载数据时可以使用的(GPU 支持 PyTorch)的配置。

device = “cuda” if Torch.cuda.is_avAIlable() else “CPu” kwaRgs = {””nuM_woRkeRs””: 1, ””pin_MeMoRy””: TRue} if device==””cuda”” else {}  tRAIn_loadeR = Torch.utils.data.DataloadeR(   Torchvision.datasets.MNIST(””/files/””, tRAIn=TRue, download=TRue),   BATch_size=BATch_size_tRAIn, **kwaRgs)  test_loadeR = Torch.utils.data.DataloadeR(   Torchvision.datasets.MNIST(””files/””, tRAIn=FAlse, download=TRue),   BATch_size=BATch_size, **kwaRgs)  imageFoldeR

imageFoldeR是一个通用数据加载器类Torchvision,可帮助加载自己的图像数据集。处理一个分类问题并构建一个神经网络来识别给定的图像是apple还是oRange。要在 PyTorch 中执行此操作,第一步是在默认文件夹结构中排列图像,如下所示:

Root ├── oRange │   ├── oRange_image1.png │   └── oRange_image1.png ├── apple │   └── apple_image1.png │   └── apple_image2.png │   └── apple_image3.png 

可以使用imageloadeR该类加载所有这些图像。

Torchvision.datasets.imageFoldeR(Root, tRansfoRM)  tRansfoRMs

PyTorch 转换定义了简单的图像转换技术,可将整个数据集转换为独特的格式。

如果是一个包含不同分辨率的不同汽车图片的数据集,在训练时,我们训练数据集中的所有图像都应该具有相同的分辨率大小。如果我们手动将所有图像转换为所需的输入大小,则很耗时,因此我们可以使用tRansfoRMs;使用几行 PyTorch 代码,我们数据集中的所有图像都可以转换为所需的输入大小和分辨率。

现在让我们加载 CIFAR10Torchvision.datasets并应用以下转换:

将所有图像调整为 32&tiMes;32 对图像应用中心裁剪变换 将裁剪后的图像转换为张量 标准化图像 iMpoRt Torch iMpoRt Torchvision iMpoRt Torchvision.tRansfoRMs as tRansfoRMs iMpoRt Matplotlib.pyplot as plt iMpoRt nuMpy as np  tRansfoRM = tRansfoRMs.CoMpose([     # Resize 32&tiMes;32     tRansfoRMs.Resize(32),     # centeR-cRop裁剪变换     tRansfoRMs.CenteRCRop(32),    &nbsp