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

标签 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)

谢谢

最佳答案

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

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

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

请注意,由于 training_datalabels 已经是张量了。

关于pytorch - 调整大小的 Pytorch 张量/数据集副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46227756/

相关文章:

python - 为什么 PyTorch 找不到我的 NVIDIA 驱动程序来支持 CUDA?

pytorch - DistributedDataParallel 与 PyTorch 中指定的 GPU 设备 ID

python - 使用形状因子级别将 pandas.DataFrame 转换为 numpy 张量

python - 如何将频谱图数据转换为张量(或多维 numpy 数组)?

python - 删除 torch.tensor 中的重复行

python - 有没有一种方法可以将每个维度视为一个元素来进行 Pytorch 元素明智的平等?

python - 为什么 pytorch 需要比应有的更多的内存?

c++ - 如何获取特征张量的 sqrt() 函数返回的标量值

python - Numpy 将矩阵 append 到张量

python - AttributeError: 'Tensor' 对象没有属性 'numpy'