【问题标题】:Resized copy of Pytorch Tensor/Dataset调整大小的 Pytorch 张量/数据集副本
【发布时间】:2017-09-14 20:29:41
【问题描述】:

我有一个包含几百万行的自制数据集。我正在尝试制作截断的副本。因此,我剪裁了用于制作原始数据集并创建新数据集的张量。但是,当我保存只有 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)

谢谢

【问题讨论】:

  • 如果我的回答对您有用,请考虑将其标记为正确答案,这样问题就不会再显示为未回答。

标签: pytorch tensor


【解决方案1】:

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

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

clone将为您提供具有独立于旧张量的内存的张量,并且文件大小会小得多。

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

【讨论】:

  • 谢谢。做到了。 torcn.Tensor() 是我试图强制进行深层复制的尝试。我怀疑这是一个直截了当的答案,但我的尝试是空的。
猜你喜欢
  • 2018-11-16
  • 2020-02-28
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多