Fork me on GitHub

把数据加载到 PyTorch 张量

把数据加载到PyTorch张量

1.把数据加载到PyTorch张量

PyTorch的torchvision.datasets包提供了一个名为ImageFolder的工具类,当数据以前面提到的格式呈现时,它可以用于加载图片以及相应的标签。通常需要进行下面的预处理步骤。

1.把所有图片转换成同等大小。大多数深度学习架构都期望图片具有相同的尺寸。

2.用数据集的均值和标准差把数据集归一化。

3.把图片数据集转换成PyTorch张量。

PyTorch在transforms模块中提供了很多工具函数,从而简化了这些预处理步骤。例如,进行如下3种变换:

· 调整成256 ×256大小的图片;

· 转换成PyTorch张量;

· 归一化数据(第5章将探讨如何获得均值和标准差)。

下面的代码演示了如何使用ImageFolder类进行变换和加载图片:

train对象为数据集保留了所有的图片和相应的标签。它包含两个重要属性:一个给出了类别和相应数据集索引的映射;另一个给出了类别列表。

把加载到张量中的数据可视化往往是一个最佳实践。为了可视化张量,必须对张量再次变形并将值反归一化。下面的函数实现了这样的功能:

现在,可以把张量传入前面的imshow函数,将张量转换成图片:

上述代码生成的输出如图3.8所示。

图3.8

2.按批加载PyTorch张量

在深度学习或机器学习中把图片进行批取样是一个通用实践,因为当今的图形处理器(GPU)和CPU都为批量图片的操作进行了优化。批尺寸根据我们使用的GPU种类而不同。每个GPU都有自己的内存,可能从2GB到12GB不等,有时商业GPU内存会更大。PyTorch提供了DataLoader类,它输入数据集将返回批图片。它抽象出了批处理的很多复杂度,如应用变换时的多worker的使用。下面的代码把前面的trainvalid数据集转换到数据加载器(data loader)中:

DataLoader类提供了很多选项,其中最常使用的选项如下。

· shuffle:为true时,每次调用数据加载器时都混合排列图片。

· num_workers:负责并发。使用少于机器内核数量的worker是一个通用的实践。

获取更多专业知识请关注公众号:“人工智能技术与咨询”

文章内容转自《PyTorch深度学习》,针对转载原作者有任何疑问,请第一时间联系我们,我们会进行调整或删除。


本文地址:https://www.6aiq.com/article/1657179303005
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出