2017-09-14 54 views
1

我有一个自制的数据集,数百万行。我正在尝试制作截断的副本。所以我剪下我用来制作原始数据集并创建一个新数据集的张量。但是,当我保存只有20K行的新数据集时,它与原始数据集的磁盘大小相同。否则一切似乎犹太教,包括,当我检查,新张量的大小。我究竟做错了什么?Pytorch张量/数据集的调整大小副本

#original dataset - 2+million rows 
dataset = D.TensorDataset(training_data, labels) 
torch.save(dataset, filename) 

#20k dataset for experiments 
d = torch.Tensor(training_data[0:20000]) 
l = torch.Tensor(labels[0:20000]) 
ds_small = D.TensorDataset(d,l) 
#this is the same size as the one above on disk... approx 1.45GB 
torch.save(ds_small, filename_small) 

感谢

+0

如果我的答案适合您,请考虑将其标记为正确答案,以便问题不再显示为未答复。 – McLawrence

回答

0

在你的代码dtraining_data共享相同的内存,即使你创造d过程中使用切片。我不知道为什么是这样的话,但是无论如何回答,给你一个解决方案:

d = x[0:10000].clone() 
l = y[0:10000].clone() 

clone会给你独立于旧张量和文件大小会小很多记忆张量。在使用torch.Tensor()

注意,因为training_data创建dl时和labels已经张量是没有必要的。

+0

谢谢。那样做了。 torcn.Tensor()是我试图强制进行深层复制的原因。我怀疑这是一个直截了当的答案,但我的尝试是空的。 – Toddwf