使用 str 键和 pytorch 张量列表将字典保存为值

Posted

技术标签:

【中文标题】使用 str 键和 pytorch 张量列表将字典保存为值【英文标题】:Saving the dictionary with str keys and a list of pytorch tensors as values 【发布时间】:2020-11-15 05:44:18 【问题描述】:

我想保存一个字典列表,其中键是查询的索引(因此字典的键是字符串)。这个字典的值是稀疏张量的列表,我存储如下:

'1185869': [tensor(indices=tensor([[   31,    59,   528,  7227, 14981]]),
         values=tensor([1., 1., 1., 1., 1.]),
         size=(30000,), nnz=5, layout=torch.sparse_coo),
  tensor(indices=tensor([[ 39,  74, 233]]),
         values=tensor([1., 1., 1.]),
         size=(30000,), nnz=3, layout=torch.sparse_coo),
  tensor(indices=tensor([[0, 1, 2]]),
         values=tensor([1., 1., 1.]),
         size=(30000,), nnz=3, layout=torch.sparse_coo),
  tensor(indices=tensor([[  36,   99,  243,  428,  513,  514,  741,  751, 1615]]),
         values=tensor([1., 1., 1., 1., 1., 1., 1., 1., 1.]),
         size=(30000,), nnz=9, layout=torch.sparse_coo),
  tensor(indices=tensor([[ 170,  356,  513,  615,  771, 1117]]),
         values=tensor([1., 1., 1., 1., 1., 1.]),
         size=(30000,), nnz=6, layout=torch.sparse_coo),
  tensor(indices=tensor([[ 9, 11]]),
         values=tensor([1., 1.]),
         size=(30000,), nnz=2, layout=torch.sparse_coo)]

我以前没有保存过任何这样的字典。一般对于普通字典,我们腌制。如果我腌制这本字典,我会收到 pytorch 警告。这让我怀疑我用来保存字典的方法。我应该使用什么扩展来保存这样的字典?腌制这样的字典安全吗?我应该用什么方法来保存它?提前致谢。

【问题讨论】:

请同时发布完整的错误。 【参考方案1】:

如果你在谈论这个警告:

/install/lib/python3.6/site-packages/torch/storage.py:34: FutureWarning: pickle support for Storage will be removed in 1.5. Use `torch.save` instead
  warnings.warn("pickle support for Storage will be removed in 1.5. Use `torch.save` instead", FutureWarning)

那么,对你有好处,它实际上不会被弃用。请参阅此PR。 Pytorch 1.6.0 昨天刚刚发布,确实没有更多的警告了。所以更新 Pytorch 以摆脱它!

【讨论】:

以上是关于使用 str 键和 pytorch 张量列表将字典保存为值的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串列表转换为pytorch中的张量?

将 pytorch 张量保存为 32 位灰度图像

将字典的键和值从“unicode”转换为“str”的最快方法?

PyTorch DataLoader 将批次作为列表返回,批次作为唯一条目。如何从我的 DataLoader 获取张量的最佳方式

Pytorch将时序列表合并在一起。

将字典的键和值并行传递给函数?