我有一个稀疏数组/张量,如下所示。
import torch
from torch_sparse import SparseTensor
row = torch.tensor([0, 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3])
col = torch.tensor([1, 2, 3, 0, 2, 0, 1, 4, 5, 0, 2, 5, 2, 4])
value = torch.rand([14])
adj_t = SparseTensor(row=row, col=col, value=value, sparse_sizes=(4, 9))我想在替换或不替换的情况下采样n_samples列索引。我可以这样做,首先将adj_t转换为dense,然后使用torch.multinomial或类似的numpy.random.choice。
sample = torch.multinomial(adj_t.to_dense(), num_samples=2, replacement=True)但是将稀疏数组转换为密集数组和torch.multinomial效率不是很高。有没有torch.multinomial的稀疏版本。如果不是,该如何实施呢?
发布于 2021-08-01 17:50:02
我不确定这是否可以像你的一行程序一样高效地完成。
据我所知,实现你想要的一种方法是:
col中的相应值(即,第0行的0是1,D12是第1行是D13,第2行的D14是D15-全部根据D16和D17值)H218G219为了不降低性能,您可能不希望使用任何内置循环。
https://stackoverflow.com/questions/68493466
复制相似问题