pytorch 是否有其他方法可以持久化数百万个不同形状的Tensor?[已关闭]

9udxz4iz  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(88)

已关闭。此问题为opinion-based。它目前不接受回答。
**希望改进此问题?**请更新问题,以便editing this post能够以事实和引文来回答。

3个月前关闭。
此帖子于25天前编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
Improve this question
我想存储数千到数百万个不同形状的Tensor到磁盘。我们的目标是将它们用作时间序列数据集。数据集可能不适合内存,我将不得不从磁盘加载样本或样本范围。
有哪些好的替代方案可以实现这一点,以及它们在以下方面的权衡:

  • 压缩选项
  • 读写开销
  • 灵活性(是否允许存储异构形状和相关的Tensor元数据?)
  • 代码易于使用(库API)
  • 易于设置(是否需要运行服务器或其他进程?)
myss37ts

myss37ts1#

在磁盘中保存任何内容的最简单方法是使用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 Package 。

import torch
x = torch.tensor([0, 1, 2, 3, 4])
torch.save(x, 'tensor.pt')


如果你想在一个文件中保存多个Tensor,你可以将它们 Package 在一个字典中:

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')

qyswt5oh

qyswt5oh2#

h5py允许你将大量Tensor保存到同一个文件中,你不必将整个文件的内容放入内存。h5py将直接将Tensor存储到磁盘,您可以在需要时加载Tensor。它允许在加载和保存时对这些Tensor进行切片,其以类似的方式工作,即不需要将整个Tensor加载到内存中,以便加载它的一个切片,或者为了保存它的一个切片。

相关问题