Pytorch Tensor / Dataset的调整大小的副本

时间:2017-09-14 20:29:41

标签: pytorch tensor

我有一个拥有几百万行的自制数据集。我正在尝试制作截断的副本。所以我剪切了我用来制作原始数据集并创建新数据集的张量。但是,当我保存新数据集(仅为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)

由于

1 个答案:

答案 0 :(得分:1)

在代码dtraining_data中共享相同的内存,即使您在创建d期间使用切片也是如此。我不知道为什么会这样,但无论如何都要回答给你一个解决方案:

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

clone会为Tensors提供一个独立于旧Tensor的内存,文件大小会小得多。

请注意,创建torch.Tensor()d时无需使用l,因为training_datalabels已经是张量。