使用 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 张量列表将字典保存为值的主要内容,如果未能解决你的问题,请参考以下文章
将字典的键和值从“unicode”转换为“str”的最快方法?
PyTorch DataLoader 将批次作为列表返回,批次作为唯一条目。如何从我的 DataLoader 获取张量的最佳方式