把数据加载到 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的使用。下面的代码把前面的train和valid数据集转换到数据加载器(data loader)中:
DataLoader类提供了很多选项,其中最常使用的选项如下。
· shuffle:为true时,每次调用数据加载器时都混合排列图片。
· num_workers:负责并发。使用少于机器内核数量的worker是一个通用的实践。
获取更多专业知识请关注公众号:“人工智能技术与咨询”
文章内容转自《PyTorch深度学习》,针对转载原作者有任何疑问,请第一时间联系我们,我们会进行调整或删除。