1. 数据载入类
pytorch数据载入使用的是torch.utils.data.DataLoader类,该类的的签名如下。
from torch.utils.data import DataLoader
DataLoader(dataset, batch_size=1, shuffle=False, sampler=None,
batch_sampler=None, num_workers=0, collate_fn=None,
pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None)
其中主要参数解释为,dataset是一个torch.utils.DataLoader类的实例,batch_size是迷你批次的大小,shuffle代表数据会不会被随机打乱,sampler是自定义的采样器(shuffle=True时会构造默认的采样器,如果想使用自定义采样方法,可以构造一个torch.utils.data.Sampler的实例来进行采样,并设置shuffle=False),其中采样器是一个Python迭代器,每次迭代的时候会返回一个数据的下标索引,而batch_sampler类似于sampler,但返回的是一个迷你批次的数据索引,而sampler返回的仅仅是一个下标索引。num_workers是数据载入使用的进程数目,默认为0,collate_fn定义如何把一批dataset的实例转换为包含迷你批次数据的张量。
2. 映射类型的数据集
为了能够使用DataLoader类,首先需要构造关于单个数据的torch.utils.data.Dataset类。该类的一种映射类型,对于每个类型,每个数据都有一个对应的索引。
from torch.utils.data import Dataset
class Dataset(object):
def __getitem__(sell, index