PyTorch学习笔记之数据加载和预处理

PyTorch 通过 torch.utils.data 对一般常用的数据加载进行了封装,可以很容易地实现多线程数据预读和批量加载。并且 torchvision 已经预先实现了常用图像数据集,包括前面使用过的 CIFAR-10, ImageNet, COCO, MNIST, LSUN 等数据集,可通过 torchvision.datasets 方便的调用。

 

Dataset

Dataset 是一个抽象类,为了能够方便的读取,需要将使用的数据包装为 Dataset 类。自定义的 Dataset 需要继承它并且实现两个成员方法:

 1、__getitem__()  该方法定义用索引 ( 0 到 len(self)) 获取一条数据或一个样本

 2、__len__() 该方法返回数据集的总长度

 

下面我们使用 kaggle 上的一个竞赛 bluebook for bulldozers 自定义一个数据集,为了方便介绍,我们使用里面的数据字典来做说明(因为条数少)

# 至此,我们的数据集已经定义完成了,我们可以实例话一个对象访问它。

# 我们可以直接使用如下命令查看数据集数据。

自定义的数据集已经创建好了,下面我们使用官方提供的数据载入器,读取数据。

 

Dataloader

Dataloader 为我们提供了对 Dataset 的读取操作,常用参数有:batch_size(每个 bath 的大小)、 shuffle(是否进行 shuffle 操作)、 num_workers(加载数据的时候使用几个子进程)。下面做一个简单的操作

DataLoader 返回的是一个可迭代对象,我们可以使用迭代器分次获取数据。

# 常见的用法是使用 for 循环对其进行遍历

我们已经可以通过 dataset 定义数据集,并使用 Dataloader 载入和遍历数据集,除了这些以外, PyTorch 还提供能 torchvision 的计算机视觉扩展包。

 

torchvision 包

torchvision 是 PyTorch 中专门用来处理图像的库, PyTorch 官网的安装教程中最后的 pip install torchvision 就是安装这个包。

 

Torchvision.datasets

Torchvision.datasets 可以理解为 PyTorch 团队自定义的 dataset, 这些 dataset 帮我们提前处理好了很多的图片数据集,我们拿来就可以直接使用:

我们可以直接使用,示例如下:

 

torchvision.models

Torchvision 不仅提供了常用图片数据集,还提供了训练好的模型,可以加载之后,直接使用,或者在进行迁移学习 torchvision.models 模块的子模块中包含以下子模型结构。

 

torchvision.transforms

transforms 模块提供了一般的图像转换操作类,用作数据处理和数据增强

(0.485,0.456,0.406), (0.2023,0.1994,0.2010) 这几个数字是根据 ImageNet 训练的归一化参数均值和方差。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章