matrix - 在Pytorch中创建knn邻接矩阵

标签 matrix indexing pytorch tensor

在 Pytorch 中,假设我有一个 top-k 索引矩阵 P(B,N,k)、一个权重矩阵 W(B,N,N) 和目标矩阵A(B,N,N),我想获得一个按以下循环操作的相邻矩阵:

for i in range(B):
     for ii in range(N):
         for j in range(k):
             if weighted:
                 A[i][ii][P[i][ii][j]] = W[i][ii][P[i][ii][j]]
             else:
                 A[i][ii][P[i][ii][j]] = 1

如何在Pytorch中更高效、简洁地实现?

最佳答案

我认为您正在寻找 torch.scatter_ :

A.scatter_(dim=2, index=P, src=W)  # for the weighted version
A.scatter_(dim=2, index=P, src=torch.ones_like(W))  # for the un-weighted version

关于matrix - 在Pytorch中创建knn邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65517572/

相关文章:

python - 当尝试读取文件名来创建自定义数据集时,改为读取矢量信息

mysql - 索引未显示为可能的键

python - 如何从 PyTorch 中的数据加载器获取整个数据集

matlab - 如何将 f(x,y) 转换为二维矩阵(即查找表)?

Python:在 numpy 中定义矩阵的内存优化方式

mysql - 索引随 varchar 值变化

MySQL InnoDb : How solve speed issue with different order by columns needed

python - 用 pytorch 计算预测函数的损失

python - 将矩阵转换为特定格式的原始字节

actionscript-3 - AS3 使用 Matrix 将 "scale"对象从其 "center"