导入方法
from torch.utils.data import Dataset, DataLoader
作用
Dataset类:可以根据id索引出单个的数据,还可以进行一些预处理。
Dataloader类:将数据集进行打包成迭代器。
基础使用方法
Dataset:需要实现三个函数__init__,len,getitem,可以自己添加一些预处理的函数,比如划分训练集、验证集。
from torch.utils.data import Dataset, DataLoader, random_split
class MyDataset(Dataset)
def __init__(self, data):#如果传的是文件地址也可以,比如cvs文件
#df = read_csv(path);
#对csv文件进行处理
self.data = data
def __len__(self): ##获取数据集大小
return len(self.data)
def __getitem__(self, id)
return self.data[id]
def get_splits(self, n_test=0.3):
# determine sizes
test_size = round(n_test * len(self.X))
train_size = len(self.X) - test_size
# calculate the split
return random_split(self.data, [train_size, test_size])
Dataloader类:将数据集按batch进行打包
常见的参数说明:
dataset:传入训练集或者验证集(Dataset对象)。
batch_size:多少个数据组成一个整体,越大对内存要求更高。
shuffle:训练集一般设为True,验证集为False。
其余很多参数不常用,比如设置采样的规则、数据集不够分时最后一个batch丢不丢等等。
所以一般都是这样写:
train, test = dataset.get_splits()
train_dl = DataLoader(train, batch_size=32, shuffle=True)
test_dl = DataLoader(test, batch_size=32, shuffle=False)