Pytorch张量/数据集的调整大小副本

3

我有一个自制数据集,有几百万行。我想制作截断副本。因此,我剪辑用于创建原始数据集的张量并创建一个新的数据集。但是,当我保存这个只有20K行的新数据集时,它在磁盘上的大小与原始数据集相同。否则,一切似乎都正常,包括我检查的新张量的大小。我做错了什么?

#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)

谢谢


如果我的答案对你有帮助,请考虑将其标记为正确答案,以便该问题不再显示为未回答。 - McLawrence
1个回答

1
在你的代码中,即使在创建d时使用切片,d和training_data仍共享同一内存。我不知道为什么会这样,但是还是给你一个解决方案:
d = x[0:10000].clone()
l = y[0:10000].clone()

clone会给你一个与旧张量的内存独立的张量,并且文件大小会更小。

注意,在创建dl时,使用torch.Tensor()是不必要的,因为training_datalabels已经是张量了。


谢谢。就是这样。torcn.Tensor()是我试图强制进行深度复制的方法。我怀疑这是一个简单的答案,但我的尝试都失败了。 - Toddwf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接