在PyTorch中,数据加载可通过自定义的数据集对象实现。数据集对象被抽取为DataSet类,实现自定义的数据集需要集成DataSet,并实现两个方法。
__getitem__ : 返回一条数据或一个样本。
__len__ : 返回样本的数量。
有时候数据是图片,图片的大小形状不一,返回的样本数值归一化至[-1,1]。torchvision提供了很多视觉图像处理的工具,其中transform模块提供了对PIL Image对象和Tensor对象的常用操作。
对 PIL Image的常见操作如下:
Resize : 调整图片尺寸
CenterCrop、RandomCrop、RandomSizedCrop:剪裁图片
pad:填充
ToTensor : 将PIL Image对象转成Tensor,会自动将[0,255]归一化至[0,1]。
对Tensor的常见操作如下:
Normalize : 标准化。即减去均值除以标准差
ToPILImage:将Tensor转为PIL Image对象。
如果要对图片进行多个操作,可通过Compose将这些操作拼接起来,类似于nn.Sequential。
transform = transforms.Compose(
[transforms.Resize(224), # 缩放图片,保持长宽比不变
transforms.CenterCrop(224), # 从图片中间切出224 * 224的图片
transforms.Totensor(), # 将图片转换成Tensor,归一化至[0,1]
])
class