我想将成千上万的具有不同形状的张量存储到磁盘中。目标是将它们用作时间序列数据集。该数据集可能无法容纳到内存中,我将不得不从磁盘加载样本或样本范围。
在保持较低的存储和访问时间的同时,实现此目标的最佳方法是什么?
答案 0 :(得分:3)
在磁盘中保存任何内容的最简单方法是使用pickle:
import pickle
import torch
a = torch.rand(3,4,5)
# save
with open('filename.pickle', 'wb') as handle:
pickle.dump(a, handle)
# open
with open('filename.pickle', 'rb') as handle:
b = pickle.load(handle)
您也可以直接使用pytorch保存内容,但这只是围绕pikle的pytorch包装器。
import torch
x = torch.tensor([0, 1, 2, 3, 4])
torch.save(x, 'tensor.pt')
如果要将多个张量保存在一个文件中,可以将它们包装在字典中:
import torch
x = torch.tensor([0, 1, 2, 3, 4])
a = torch.rand(2,3,4,5)
b = torch.zeros(37)
torch.save({"a": a, "b":b, "x", x}, 'tensors.pt')
答案 1 :(得分:0)
h5py 允许您将大量张量保存到同一个文件中,并且您不必能够将整个文件内容放入内存中。 h5py 会将张量直接存储到磁盘,您可以在需要时加载所需的张量。它允许在加载和保存时对这些张量进行切片,其工作方式类似,即无需将整个张量加载到内存中,以便加载它的一个切片,或保存它的一个切片。< /p>