在说TensorDataset之前我们先简单说一下Dataset。
一般情况下是Dataset和DataLoader配合使用
Dataset :用来整理数据的格式 ,即从全部数据中获取
DataLoader:用来分批次向模型中传入数据,也就是把 Dataset中的全部数据分批次送入模型中
但有时数据格式比较简单,也可以使用TensorDataset的方式来整理数据的格式
例如:按对三取余来进行分类,可以分为1,2,0 三种情况
x = torch.Tensor([[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]])
y = torch.Tensor([1, 2, 0])
tensorDataset = Data.TensorDataset(x, y)
print(dataset)
#<torch.utils.data.dataset.TensorDataset object at 0x0000019D740B8B38>
将tensorDataset输出,可以得到一下格式的数据
for i, j in tensorDataset:
print(i, j)
# tensor([ 1., 4., 7., 10.]) tensor(1.)
# tensor([ 2., 5., 8., 11.]) tensor(2.)
# tensor([ 3., 6., 9., 12.]) tensor(0.)
dataloader = Data.DataLoader(dataset=tensorDataset,
batch_size=2,
shuffle=False, #shuffle是否打乱顺序,默认为False表示不打乱顺序
drop_last=True) # drop_last表示是否舍弃最后一个,
#举例:本次总的数据是三个,每次运送两个数据
print(dataloader)
for j, k in dataloader:
print(j, k)
这样就可以分批次的取出数据了
这事只输出了两个数据,最后一个被舍弃
tensor([[ 1., 4., 7., 10.],
[ 2., 5., 8., 11.]]) tensor([1., 2.])