如何向量化总和聚合?
How to vectorize the sum aggregation?
我试图将这段 Python(或经过一些小改动后的 Matlab)代码矢量化,这是有向图的总和聚合
for j in range(batchSize):
for i in range(2*nEdges[j]):
localSum[j,receivers[j,i],0:2]+=(localFeature[j,i,0:2])
我知道如何在 =
时删除其中一个循环,但我没能找到在 +=
情况下执行此操作的方法。做同样的技巧的困难在于 receivers[j,i]
对于不同的 j
和 i
可能是相同的值。
有人知道在这种情况下如何进行矢量化吗?
非常感谢:)
终于找到了。 torch_scatter
包提供此功能(用于 pytorch 张量)。嵌套循环可以重写为
localSum = torch_scatter.scatter(localFeature,receivers,dim=1,reduce='sum')
我试图将这段 Python(或经过一些小改动后的 Matlab)代码矢量化,这是有向图的总和聚合
for j in range(batchSize):
for i in range(2*nEdges[j]):
localSum[j,receivers[j,i],0:2]+=(localFeature[j,i,0:2])
我知道如何在 =
时删除其中一个循环,但我没能找到在 +=
情况下执行此操作的方法。做同样的技巧的困难在于 receivers[j,i]
对于不同的 j
和 i
可能是相同的值。
有人知道在这种情况下如何进行矢量化吗?
非常感谢:)
终于找到了。 torch_scatter
包提供此功能(用于 pytorch 张量)。嵌套循环可以重写为
localSum = torch_scatter.scatter(localFeature,receivers,dim=1,reduce='sum')