今天我们来谈谈,当我们拥有数据集时,如何对这数据集进行处理,将数据集放入模型中进行预测。
要加载数据并转换为可以进行训练的格式,这常常时数据科学中占用我们相当多时间的领域之一。Pytorch开发了与数据交互的标准约定,所以能一致地处理数据,不论是处理图像、文本还是音频。
与数据交互的两个主要约定是数据集(dataset)和数据加载器(data loaders)。数据集是一个Python类,使我们能够获得能够提供给神经网络的数据。数据加载器则是从数据集向网络提供数据(这可能包干很多信息,比如有多少个工作进程向网络提供数据?或者一次传入多少个图像)。
那么我们如何与Pytorch进行交互呢?请看下面的这个抽象Python类:
class Dataset(object):
def _getitem_(self,index):
rasise NotImplementedError
def _len_(self):
raise NotImplementedError
我们要实现一个方法返回数据集大小(len),另外要实现一个方法从数据集获取一个元素,作为一个(label,tensor)对返回。数据加载器向神经网络提供数据进行训练时会调用这个方法。所以我们可以写出getitem的方法体,接受一个图像,将它转换为一个张量,再返回这个张量和标签,以便Pytorch进行处理。基于此,Pytorch能让我们更轻松地完成这些工作
注:文章摘选自《基于Pytorch的深度学习》Ian Pointer著