首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中稀疏数组/张量的高效多项式采样

python中稀疏数组/张量的高效多项式采样
EN

Stack Overflow用户
提问于 2021-07-23 10:48:06
回答 1查看 131关注 0票数 1

我有一个稀疏数组/张量,如下所示。

代码语言:javascript
复制
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

代码语言:javascript
复制
sample = torch.multinomial(adj_t.to_dense(), num_samples=2, replacement=True)

但是将稀疏数组转换为密集数组和torch.multinomial效率不是很高。有没有torch.multinomial的稀疏版本。如果不是,该如何实施呢?

EN

回答 1

Stack Overflow用户

发布于 2021-08-01 17:50:02

我不确定这是否可以像你的一行程序一样高效地完成。

据我所知,实现你想要的一种方法是:

  1. 按行对出现在空间张量中的值进行分组例如,使用this solutionnumpy.random.multinominal为每行创建随机选择的索引列表
    1. 将索引映射到col中的相应值(即,第0行的01,D12是第1行是D13,第2行的D14是D15-全部根据D16和D17值)H218G219

为了不降低性能,您可能不希望使用任何内置循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68493466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档