保存许多不同形状的张量的最佳方法?

时间:2020-07-16 10:11:11

标签: io pytorch

我想将成千上万的具有不同形状的张量存储到磁盘中。目标是将它们用作时间序列数据集。该数据集可能无法容纳到内存中,我将不得不从磁盘加载样本或样本范围。

在保持较低的存储和访问时间的同时,实现此目标的最佳方法是什么?

2 个答案:

答案 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>