PyTorch 1.0 中文文档:torch.sparse

2022-05-07 14:10:21 浏览数 (1)

译者:hijkzzz

警告

这个API目前还处于试验阶段,可能在不久的将来会发生变化。

Torch支持COO(rdinate )格式的稀疏张量,这可以有效地存储和处理大多数元素为零的张量。

稀疏张量表示为一对稠密张量:一个值张量和一个二维指标张量。一个稀疏张量可以通过提供这两个张量,以及稀疏张量的大小来构造(从这些张量是无法推导出来的!)假设我们要定义一个稀疏张量,它的分量3在(0,2)处,分量4在(1,0)处,分量5在(1,2)处,然后我们可以这样写

代码语言:javascript复制
>>> i = torch.LongTensor([[0, 1, 1],
 [2, 0, 2]])
>>> v = torch.FloatTensor([3, 4, 5])
>>> torch.sparse.FloatTensor(i, v, torch.Size([2,3])).to_dense()
 0  0  3
 4  0  5
[torch.FloatTensor of size 2x3]

注意,LongTensor的输入不是索引元组的列表。如果你想这样写你的指标,你应该在把它们传递给稀疏构造函数之前进行转置:

代码语言:javascript复制
>>> i = torch.LongTensor([[0, 2], [1, 0], [1, 2]])
>>> v = torch.FloatTensor([3,      4,      5    ])
>>> torch.sparse.FloatTensor(i.t(), v, torch.Size([2,3])).to_dense()
 0  0  3
 4  0  5
[torch.FloatTensor of size 2x3]

也可以构造混合稀疏张量,其中只有前n个维度是稀疏的,其余维度是密集的。

阅读全文/改进本文

0 人点赞